Java 无法从流入数据库检索列

Java 无法从流入数据库检索列,java,spring-boot,influxdb,influxql,Java,Spring Boot,Influxdb,Influxql,我正在使用sprigboot和influx客户端: 我面临的问题是,我试图从influx数据库获取specify列,但在查询中输入列名时无法获取任何记录。但是,当我尝试使用select*时,我获取的是数据 @Data @Measurement(name = "layout") public class LayoutMapper { @Column(name = "id", tag=true) private String id; @Column(name = "lin

我正在使用sprigboot和influx客户端:

我面临的问题是,我试图从influx数据库获取specify列,但在查询中输入列名时无法获取任何记录。但是,当我尝试使用select*时,我获取的是数据

@Data
@Measurement(name = "layout")
public class LayoutMapper {

    @Column(name = "id", tag=true)
    private String id;

    @Column(name = "linename", tag=true)
    private String lineName;

    @Column(name = "tenantid")
    private String tenantName;

    @Column(name = "layout")
    private String layout;



}
要将POJO保存到数据库,请执行以下操作:

Point point = Point.measurementByPOJO(clazz.getClass()).addFieldsFromPOJO(pojoObject).build();
            connection.query(new Query("CREATE RETENTION POLICY " + retentionPolicyName + " ON " + dbProperties.getDatabase() DURATION 1h  REPLICATION 1 DEFAULT"));
            connection.write(dbProperties.getDatabase(), retentionPolicyName, point);
工作:

  select * from layout;
  select layout from layout;
不工作(提供空记录):

有人能指出我做错了什么吗


注意:很奇怪,我们不能为字符串列执行select查询。有什么建议吗?

我认为XDB java客户端库创建用于访问数据的抽象的方法有点混乱。首先,这些实际上都不是列。在XDB中,您的数据使用以下数据模型(也称为线路协议)存储:
测量名称,标记集字段集时间戳

度量值”是一种高级别的数据分组,它是字符串,标记集”是一组键/值对,可以将其视为元数据,其中所有值都是索引和字符串,“字段集”是一组键/值对,其中值可以是int64,浮动64、布尔或字符串。与标记不同,字段没有索引

LayoutMapper
类中,为
id
linename
设置
tag=true
,这意味着这两个是测量中标记集的成员。标记用于以高性能的方式查询字段。因此,它们通常位于WHERE子句中,而不仅仅是SELECT

在XDB中,如果要返回特定标记,SELECT子句必须至少包含一个字段。这就是为什么您只能从包含
*
布局
字段的查询中获得结果。总之,请尝试以下方法:

SELECT layout, linename FROM layout;
SELECT layout, linename FROM layout;