所以从1.5开始,我们可以用@UserDefinedType来映射UDT。我们在尝试映射其中之一时遇到错误:
@UserDefinedType("criteria")
public class Criteria {
@CassandraType(type = Name.VARCHAR)
private String cle;
@CassandraType(type = Name.VARCHAR)
private String nom;
@CassandraType(type = Name.VARCHAR)
private String format;
}
我们在启动时收到此错误:
org.springframework.dao.InvalidDataAccessApiUsageException: Unknown type [class java.lang.String] for property [cle] in entity [com.laposte.ariane.udt.Critere]; only primitive types and Collections or Maps of primitive types are allowed
为了避免这种情况,我们删除了 @CassandraType 注释,但这似乎不对。
我们的映射出了什么问题?
最佳答案
DataStax' 驱动程序仅将 Name.TEXT
报告为原始数据类型,但不通过 DataType.allPrimitiveTypes()
报告 Name.VARCHAR
。 Spring Data Cassandra 使用 DataType.allPrimitiveTypes() 来解析名称到类型的映射。我提交了ticket为这两个添加显式类型映射。
另请参阅:
关于java - Spring Data Cassandra 和用户定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45484972/