java - Spring Cassandra 存储一个带有自定义对象的列表

标签 java database spring list cassandra

我喜欢存储这样的对象:

@Table(value = "my_table")
public class MyTableDto {
  @PrimaryKeyColumn(name = "uid", type = PrimaryKeyType.PARTITIONED)
  @CassandraType(type = DataType.Name.UUID)
  private UUID uid;

  @Column(value = "child_ids")
  private List<ChildIdDto> childIds;
}

然后我得到异常:

Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Only primitive types are allowed inside Collections for property [childIds] of type ['interface java.util.List'] in entity [de.myapplication.repository.dto.MyTableDto]

我确实理解异常,但是否有另一种方法来持久化自定义对象?

编辑:

  • 当我注释掉这个属性时,一切正常

最佳答案

! 永不言败,我找到了解决方案。

为了举个好例子,我将列出所有对应的类。

ParentClass.java

@Table(value = "my_table") //OPT
public class MyTableDto {
  @PrimaryKeyColumn(name = "uid", type = PrimaryKeyType.PARTITIONED) 
  @CassandraType(type = DataType.Name.UUID)
  private UUID uid;

  @Column(value = "child_ids") //OPT
  private List<ChildDto> childIds;
}

ChildDto.java

@UserDefinedType // THE SOLUTION
public class ChildDto {
  @Column(value = "child") //OPT
  @CassandraType(type = DataType.Name.TEXT) //OPT
  private String groupId;

  @Column(value = "description") //OPT
  @CassandraType(type = Name.TEXT) //OPT
  private String description;
}

@UserDefinedType 是解决方案。
有关详细信息,请参阅 here .

注意:每个带有“OPT”的注释都不是必需的

关于java - Spring Cassandra 存储一个带有自定义对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091345/

相关文章:

java - 如何自定义JForum?

java - 使用 Spring Security ACL - 如何将对象的 READ 权限分配给所有用户(注册和匿名)?

java - 如何在 spring MVC 的 Controller 中操作 jQuery AJAX JSON 数据

java - 在 java 上显示 JTextField

java - 打印树集时添加线条

java - 在 JTable 中设置列​​标题

c# - 可以自动将元素添加到集合中吗?

php - 更新数据库表的问题

java - 使用java访问OLE对象

java - 如何为 Spring Cache 设置自定义 KeyGenerator?