当前位置: 首页 > 知识库问答 >
问题:

将cassandra List字段映射到spring的Java-data-Cassandra

丰辰沛
2023-03-14

有人能给我指出一个字段声明的list > 如何在spring-数据-卡桑德拉中映射回Java。我可以简单地通过list > 保存数据,但当从数据库读取数据时不起作用,会弹出一个未找到编解码器的异常

非常感谢帮助。

共有1个答案

施恩
2023-03-14

你的声明是正确的。但是对于嵌套集合读取,您需要创建自定义的RowMapper来将行转换为DTO。

示例:

让我们进行桌考

CREATE TABLE ctest (
    id int PRIMARY KEY,
    data list<frozen<list<int>>>
);

和DTO

public class CTest {

    @PrimaryKey
    private int id;

    private List<List<Integer>> data;

    public CTest() {
    }

    private void setData(List<List<Integer>> data) {
        this.data = data;
    }

    public List<List<Integer>> getData() {
        return data;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

}

现在我们要从中查询数据

List<CTest> results = cassandraOperations.query("SELECT * FROM ctest  WHERE id = 1", new RowMapper<CTest>() {

    private final TypeToken<List<Integer>> listOfInt = new TypeToken<List<Integer>>() {};

    public CTest mapRow(Row row, int rowNum) throws DriverException {
        CTest test = new CTest();
        test.setId(row.getInt("id"));
        test.setData(row.getList("data", listOfInt));
        return test;
    }
});
 类似资料:
  • 卡桑德拉表列: Java实体: 当执行从表列“pickuploc”中选择查询时,并没有完全映射到实体中定义的picupLocal属性。 这是我得到的回应: 使用Spring数据卡桑德拉1.5.8

  • 我的要求是在域对象中只有很少的自定义字段。这些字段可能因客户端而异。 我们使用Spring Data JPA来执行查找器。Spring数据隐式地为域的静态字段提供查找器,还可以处理对象图中字段的查找器。 } 我想重写QueryLookupStrategy,并在PartTreeJpaQuery的行上创建我的CustomJpaQuery来实现它。有没有更好的办法?spring data jpa是否提供

  • 我正在使用弹性搜索和Spring数据弹性。并尝试使用多重搜索。问题是在使用类字段搜索时,它不适用于嵌套字段。我的映射如下所示 我有一个带有searchQuery的endpoint,比如: 问题是查询不适用于嵌套字段。有什么建议吗? 使现代化 事实上,嵌套对象可以查询为 有没有两个类似的问题

  • 我有一个restendpoint,它返回3级嵌套json,如下所示: 我有一个java类,没有相同的3个嵌套级别: 当我使用restTemplate拨打rest电话时: jackson甚至没有使用json ignore属性映射字段departName(因为我猜它不在同一嵌套级别)。 如何将这个http json响应映射到忽略嵌套父json的java字段?

  • 我需要将源类中的字段值映射到字段属性。我可以使用Mapstruct使用@mapper注释的'expression'参数来完成 有没有其他方法可以不使用“表达式”来进行映射?

  • 我对Spring WebFlux和反应编程比较陌生,所以请原谅我的问题是它没有任何意义。 基本上,我想要实现的是用“getRandomPlanetName()”返回一个新行星的名称,同时在Delay对象中设置一个字段“delayElement”。类似这样的事情: 还有,我是否可能只返回一个字符串,它是getPlanetName()的结果,而不是一个对象的单声道?