我有一个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集?谢谢。
最佳答案
Datastax已确认这是Cassandra缺陷,目前不起作用。