如何将Cassandra Row解析为Java POJO类型

问题描述 投票:0回答:1

我正在使用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
1个回答
0
投票

只需使用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,尽管你对日期/时间等方面的格式控制较少。

© www.soinside.com 2019 - 2024. All rights reserved.