Java/Cassandra在生成冻结属性时抛出错误

Java/Cassandra在生成冻结属性时抛出错误,java,cassandra,Java,Cassandra,我有一个Java类,它使用datastax cassandra驱动程序将pojo写入cassandra表。一切都很好,直到必须将类对象写入cassandra表为止。它抛出以下错误: 原因:com.datastax.driver.core.exceptions.codeconotfoundexception:未找到请求操作的编解码器:[冻结code.generic.common.data.MyCustomSmiObject] 因此,我尝试了很多不同的方法,试图使属性“冻结”,但没有任何效果,我不断

我有一个Java类,它使用datastax cassandra驱动程序将pojo写入cassandra表。一切都很好,直到必须将类对象写入cassandra表为止。它抛出以下错误:

原因:com.datastax.driver.core.exceptions.codeconotfoundexception:未找到请求操作的编解码器:[冻结code.generic.common.data.MyCustomSmiObject]

因此,我尝试了很多不同的方法,试图使属性“冻结”,但没有任何效果,我不断得到相同的错误。下面是类对象的一个示例

@Table(keyspace="projkeyspace", name="summarytable")
public class DataGroupingObject implements Serializable {

    @Column(name = "objid")
    private String objId;
    @Column(name = "timeofjob")
    private Date timeOfJob;

    @Column(name = "smiobjectinput")
    @Frozen
    //Have also tried:
    //@Frozen("frozen<projKeySpace.smi>")
    //@Frozen("frozen<smi>")
    //@Frozen("frozen<MyCustomSmiObject>")
    //And all other permutations I can think of...
    private MyCustomSmiObject myCustomSmiObject; //The problem attribute

    @Column(name = "column5")
    private String dataForColumn5;

    //Getters and setters....
}

就像我说的,我不知所措。任何帮助都将不胜感激,并提前表示感谢

smi是UDT,不是吗?在这种情况下,应使用
@UDT(keyspace=“projkeyspace”,name=“smi”)
而不是
@Table
MyCustomSmiObject
进行注释。通过这样做,驱动程序应该检测到这是一个UDT,它将为它注册一个自定义编解码器,这将允许它能够正确地序列化和反序列化它


另一个注意事项是,
@freezed
注释目前对映射程序没有影响,在映射程序支持模式生成之前,它只是信息性的。

是的,我不知道UDT。这就是答案,谢谢!
@Table(keyspace="projkeyspace", name="smi")
public class MyCustomSmiObject implements Serializable {

    @Column(name = "idstring")
    private String idString;
    @Column(name = "valuenum")
    private Double valueNum;

    //Getters and Setters....
}