当前位置: 首页 > 知识库问答 >
问题:

Java/Cassandra属性冻结引发错误

糜淇
2023-03-14

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

由:com.datastax.driver.core.exceptions.codecNotFoundException引起:未找到请求操作的编解码器:[Frosted <->code.generic.common.data.myCustomsMiObject]

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

@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....
}

我忽略了什么?深入研究datastax文档之后,我尝试了http://docs.datastax.com/en/drivers/java/2.2/com/datastax/driver/mapping/annotations/frozen.html

我还尝试过将MyCustomSmiObject映射到冻结的'ProjkeySpace.smi',但没有成功(当然我不认为会成功,因为cassandra中实际上没有一个表称为smi,它只是一种类型),但这里有一个例子:

@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....
}

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

共有1个答案

贺运良
2023-03-14

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

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

 类似资料:
  • 我setup.py密码是 谁能帮我解决这个问题。

  • 我有一个与cassandra连接的springboot应用程序。我试图在地图中创建一个地图,但得到了下面的异常。 代码 成年男子

  • 我有一个与cassandra连接的springboot应用程序。我试图在地图中创建地图,但遇到以下异常。在我看来,即使我使用了冻结值,它仍在发送cal,但没有关键字冻结 错误 代码 马文

  • 我正在尝试从mp4文件创建自适应流。我在流媒体方面有相当丰富的经验,并通过Silverlight成功实现了流畅的流媒体。我们想要一个在HTML5中工作的解决方案。我在追求短跑。以下是我采取的步骤。。。 使用ffmpeg将mp4重新采样到不同的大小 我已经做了很多工作来学习这些实用程序,并创建一个过程,以获得我认为可行的输出。创建可靠的破折号工件。但我似乎做错了什么。下面是我运行的命令行示例。 第一

  • 如何为版本设置以下属性: 本质上,我想设置它,以便应该有0个连接到我的远程dc的客户端,也应该有0个读/写。一切都应该是我正在磨合的DC本地的。 将设置为本地DC是否会达到相同的效果?

  • 我正在使用一个相对较大的代码存储库,需要全部加载到Intellij中。最近Intellij挂起了很长时间( 冻结期间的Stacktrace: