Cassandra可以嵌套UDT集吗?

时间:2016-10-25 16:27:38

标签: java scala cassandra user-defined-types

我有一个带有表的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集?感谢。

2 个答案:

答案 0 :(得分:0)

Datastax承认这是Cassandra缺陷,目前无效。

答案 1 :(得分:0)

使用spring数据cassandra是的,但是嵌套的udt必须不使用@cassandraType进行解密

https://jira.spring.io/browse/DATACASS-506

希望有帮助