@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)
Steps to reproduce:
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 doubleExpected 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: