我喜欢存储这样的对象:
@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/