Java/Cassandra在生成冻结属性时抛出错误
我有一个Java类,它使用datastax cassandra驱动程序将pojo写入cassandra表。一切都很好,直到必须将类对象写入cassandra表为止。它抛出以下错误: 原因:com.datastax.driver.core.exceptions.codeconotfoundexception:未找到请求操作的编解码器:[冻结Java/Cassandra在生成冻结属性时抛出错误,java,cassandra,Java,Cassandra,我有一个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....
}