【问题标题】:How parse Cassandra Row into a Java POJO type如何将 Cassandra Row 解析为 Java POJO 类型
【发布时间】:2019-09-05 02:20:13
【问题描述】:

我正在使用 datastax cassandra。我正在尝试将 cassandra 结果解析为 java 类型并在响应中作为 json 返回。 这里每一行都是 VendorToken.class 类型(带有 vendorId、vendorName 字段) 如何使用 jackson ObjectMapper 将一行解析为 VendorToken.class 类型?

ResultSet results = getToken(vendorId);
for(Row row : results) {
    System.out.println(row);   // Output is: Row[vendorId, testVendorName]
}

或者有没有其他方法可以解析为 json?我想以json格式返回给用户。请帮忙。

【问题讨论】:

    标签: java datastax cassandra-3.0 datastax-java-driver


    【解决方案1】:

    只需将Object Mapper 用于此类事情 - 它不在驱动程序核心中,因此您需要在构建文件中再添加一个依赖项。之后,您可以将 POJO 类直接映射到 Cassandra 表中/从 Cassandra 表中映射出来。

    @Table(name = "t4", keyspace = "test")
    public class Test4Data {
        @PartitionKey
        int id;
    
        @ClusteringColumn
        @Column(name = "c")
        int clCol;
    
        @Column(name = "t")
        String text;
    // ... getters/setters, etc.
    }
    
    MappingManager manager = new MappingManager(session);
    Mapper<Test4Data> mapper = manager.mapper(Test4Data.class);
    Test4Data test4Data = mapper.get(0, 1);
    // output as JSON, etc.
    

    如果您需要处理多个条目,例如仅按分区键查询等,则需要使用Accessors,如下所示:

    @Accessor
    public interface UserAccessor {
        @Query("SELECT * FROM user")
        Result<User> getAll();
    }
    
    UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);
    Result<User> users = userAccessor.getAll();
    

    然后遍历结果...

    附:但是您可以使用SELECT JSON ...docexample)直接从 Cassandra 获取 JSON,尽管您对日期/时间等内容的格式控制较少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      相关资源
      最近更新 更多