influxdata / influxdata/influxdb-client-java
Wrong column type when use wildcard with @Measurement
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 477
- Forks
- 129
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
__Steps to reproduce:__
```java
@Getter
public abstract class InfluxDbDefaultPoint {
@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 {
public InfluxDbTemperaturePoint(Long deviceId, Double value) {
super(deviceId, value);
}
}
public static void main(String[] args) {
final InfluxDBClient database = InfluxDBClientFactory.create("http://localhost:8200","".toCharArray(),"","");
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**
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, das Problem mit dem Beispiel für @Measurement, @Column, InfluxDbDefaultPoint und InfluxDbTemperaturePoint über writeMeasurement zu reproduzieren. Verfolge, wie der Feldwert des Wildcard-Generics vor der Serialisierung klassifiziert wird, und überprüfe anschließend, dass 30.0 als numerisches Feld und nicht als String geschrieben wird, ohne den Nicht-Wildcard-Fall zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- databases
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100