我有一个带有表的Cassandra模式,该表的列是用户定义类型(UDT)的SET。 UDT本身有一个列是另一个UDT的SET。 我可以在cqlsh中创建类型和表但是当我尝试在我的Java(实际上是Scala)代码中使用这个模式时,我得到一个"缺少编解码器错误"。
有人知道Datastax java驱动程序是否支持此功能吗?
CREATE TYPE testname(firstname text, lastname text);
CREATE TYPE testuser(testname <FROZEN<SET<FROZEN<testname>>>);
CREATE TABLE testobjects(
simplename text
testusers SET<FROZEN<testuser>>
) WITH CLUSTERING ORDER BY (simple name DESC);
我已经注册了两种UDT类型的编解码器,但是当我尝试绑定预准备语句时,我收到错误:
can't find code for:
cqlType: frozen<set<frozen<testname>>
javaType: TestNameUDT
因为虽然有一个编解码器将testname映射到TestNameUDT,但实际上没有编解码器将一组testname映射到TestNameUDT。
所以,我想知道是否有人知道Java驱动程序是否支持这个...有没有人创建嵌套的UDT集?感谢。
答案 0 :(得分:0)
Datastax承认这是Cassandra缺陷,目前无效。
答案 1 :(得分:0)
使用spring数据cassandra是的,但是嵌套的udt必须不使用@cassandraType进行解密
https://jira.spring.io/browse/DATACASS-506
希望有帮助