influxdb-client-java
influxdb-client-java copied to clipboard
Wrong column type when use wildcard with @Measurement
trafficstars
Steps to reproduce:
@Getter
public abstract class InfluxDbDefaultPoint<T> {
@Column(timestamp = true)
private final Instant time;
@Column(tag = true)
private final Long deviceId;
@Column
private final T value;
public InfluxDbDefaultPoint(final Long deviceId, final T value) {
this.time = Instant.now();
this.deviceId = deviceId;
this.value = value;
}
}
@Measurement(name = "temperature")
public class InfluxDbTemperaturePoint extends InfluxDbDefaultPoint<Double> {
public InfluxDbTemperaturePoint(Long deviceId, Double value) {
super(deviceId, value);
}
}
public static void main(String[] args) {
final InfluxDBClient database = InfluxDBClientFactory.create("http://localhost:8200","<token>".toCharArray(),"<org>","<bucket>");
database.getWriteApiBlocking().writeMeasurement(WritePrecision.S, new InfluxDbTemperaturePoint(0L,30.0));
}
When I try to send such a prepared model to influxdb, I get an error: HTTP status code: 422; Message: failure writing points to database: partial write: field type conflict: input field "value" on measurement "temperature" is type string, already exists as type float dropped=1.
Previously I had an InfluxDbTemperaturePoint object without wildcard and it worked fine - it saved double
Expected behavior: It should save the value 30.0 as float/dobule.
Actual behavior: It tries to save the value 30.0 as a string.
Specifications:
- Client Version: 6.9.0
- InfluxDB Version: v2.7.1
- JDK Version: Java(TM) SE Runtime Environment (build 19.0.2+7-44)
- Platform: Windows
I found almost the same problem, but the answer to #531 does not solve my problem