influxdata / influxdb-java

Java client for InfluxDB
MIT License
1.18k stars 478 forks source link

About Influx storage type conversion #1005

Open fishered opened 6 months ago

fishered commented 6 months ago

hello!I'm having a problem I used influx version 1.X and see write point storage type:

    @SuppressWarnings("checkstyle:finalparameters")
        @Deprecated
        public Builder field(final String field, Object value) {
          if (value instanceof Number) {
            if (value instanceof Byte) {
              value = ((Byte) value).doubleValue();
            } else if (value instanceof Short) {
              value = ((Short) value).doubleValue();
            } else if (value instanceof Integer) {
              value = ((Integer) value).doubleValue();
            } else if (value instanceof Long) {
              value = ((Long) value).doubleValue();
            } else if (value instanceof BigInteger) {
              value = ((BigInteger) value).doubleValue();
            }
          }
          fields.put(field, value);
          return this;
        }

so insert data , All data will be converted to Double, InfluxDBResultMapper entity type must be Double my dependency:

 <dependency>
            <groupId>org.influxdb</groupId>
            <artifactId>influxdb-java</artifactId>
            <version>2.22</version>
        </dependency>
I want to use Mapper to convert to an entity Is there any other way I can use other types?
eranl commented 6 months ago

Hi @fishered, I'm not sure I understand the issue. Please see the relevant manual section, and let me know if it answers your question.

fishered commented 6 months ago

I'm sorry I didn't find what I was looking for, Currently my influx version is 1. X ,In influxdb-java:2.22 I found out: Builder field. If the type in my POJO is Float or BigDecimal, Converting to double will cause the problem of losing accuracy, So What should I do?

for Example : @Column(name="voltage") private Float voltage;

Because the store converts the Float to a Double, Accuracy is lost when fetched @eranl

eranl commented 5 months ago

@fishered, double has higher precision than float.