gpt4 book ai didi

java - Cassandra Java 驱动程序 3 EnumNameCodec

转载 作者:行者123 更新时间:2023-12-01 10:34:01 25 4
gpt4 key购买 nike

我正在从 Cassandra 2.1 迁移到 v3,因此使用新的 Java 驱动程序 v3。对 @Enumerated(EnumType.STRING) 或 ORDINAL 进行了更改,该更改已被驱动程序附加模块 EnumOrdinalCodec 和 EnumNameCodec 交换。

在我的项目中我有它:

@Column(name = "myColumn")
@Enumerated(EnumType.STRING)
private myEnum currentMyEnum ;

我查找了一些有关如何使用它们的示例,但并没有真正理解它们是如何工作的。我发现的主要信息是那个例子:

enum Foo {...}
enum Bar {...}

// register the appropriate codecs
CodecRegistry.DEFAULT_INSTANCE
.register(new EnumOrdinalCodec<Foo>(Foo.class))
.register(new EnumNameCodec<Bar>(Bar.class))

// the following mappings are handled out-of-the-box
@Table
public class MyPojo {
private Foo foo;
private List<Bar> bars;
...
}

我不清楚。看起来他们将枚举、编解码器和 DAO 模型放在同一个文件中。在我的项目中,枚举和 DAO 模型的文件不同,当我尝试将“CodecRegistry.DEFAULT_INSTANCE.register(new EnumOrdinalCodec(myEnum.class))”放入其枚举或 DAO 文件中时,我从 IDE Eclipse 收到错误。/p>

如果有人可以帮助我了解如何更改 @Enumerated(EnumType.STRING) 以使用 EnumNameCodec,请提前致谢。

最佳答案

It looks they put enum, codecs and DAO model in the same file

这只是一个代码示例。在实际项目中,这 3 个代码块放在不同的文件中

当您创建Cluster时对象,您可以注册一个编解码器注册表(使用 new CodecRegistry 创建一个)。该编解码器注册表将负责将非 native 类型(如 Java 枚举)转换为受支持的 CQL Java 类型。

通过注册new EnumOrdinalCodec<Foo>(Foo.class)例如,您可以使用枚举 Foo在任何 Java bean 中(甚至在像 list 这样的集合中),对象映射器将自动检测是否有一个编解码器来转换枚举 Foo转换为 CQL 整数

关于java - Cassandra Java 驱动程序 3 EnumNameCodec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com