【问题标题】:Datastax java driver 3.0.0 Enumerated annotation not foundDatastax java driver 3.0.0 Enumerated annotation not found
【发布时间】:2016-05-10 00:41:27
【问题描述】:

希望我能很好地阅读文档: http://docs.datastax.com/en/developer/java-driver/3.0/java-driver/reference/crudOperations.html.

枚举注解

如果您的类包含枚举类型字段,则使用枚举注解。

我有一个 Java 枚举,我想使用 @Enumerated 注释,但我似乎在 3.0.0 版本的驱动程序中找不到它,它存在于 2.1.9 中。

$ find . -type f -name \*.jar|while read i; do echo ====== $i =====; jar -tf $i|grep Enumerated; done
====== ./cassandra-driver-core/2.1.4/cassandra-driver-core-2.1.4-javadoc.jar =====
====== ./cassandra-driver-core/2.1.4/cassandra-driver-core-2.1.4-sources.jar =====
====== ./cassandra-driver-core/2.1.4/cassandra-driver-core-2.1.4.jar =====
====== ./cassandra-driver-core/2.1.5/cassandra-driver-core-2.1.5.jar =====
====== ./cassandra-driver-core/2.1.7.1/cassandra-driver-core-2.1.7.1.jar =====
====== ./cassandra-driver-core/2.1.9/cassandra-driver-core-2.1.9.jar =====
====== ./cassandra-driver-core/3.0.0/cassandra-driver-core-3.0.0-sources.jar =====
====== ./cassandra-driver-core/3.0.0/cassandra-driver-core-3.0.0.jar =====
====== ./cassandra-driver-dse/2.1.5/cassandra-driver-dse-2.1.5.jar =====
====== ./cassandra-driver-extras/3.0.0/cassandra-driver-extras-3.0.0.jar =====
====== ./cassandra-driver-mapping/2.1.4/cassandra-driver-mapping-2.1.4-javadoc.jar =====
com/datastax/driver/mapping/annotations/class-use/Enumerated.html
com/datastax/driver/mapping/annotations/Enumerated.html
====== ./cassandra-driver-mapping/2.1.4/cassandra-driver-mapping-2.1.4-sources.jar =====
com/datastax/driver/mapping/annotations/Enumerated.java
====== ./cassandra-driver-mapping/2.1.4/cassandra-driver-mapping-2.1.4.jar =====
com/datastax/driver/mapping/annotations/Enumerated.class
====== ./cassandra-driver-mapping/2.1.7.1/cassandra-driver-mapping-2.1.7.1.jar =====
com/datastax/driver/mapping/annotations/Enumerated.class
====== ./cassandra-driver-mapping/2.1.9/cassandra-driver-mapping-2.1.9.jar =====
com/datastax/driver/mapping/annotations/Enumerated.class
====== ./cassandra-driver-mapping/3.0.0/cassandra-driver-mapping-3.0.0-sources.jar =====
====== ./cassandra-driver-mapping/3.0.0/cassandra-driver-mapping-3.0.0.jar =====

这在新版本中是否有所改变?如果是,文档可能也应该更新。

它似乎确实从来源中消失了:https://github.com/datastax/java-driver/tree/3.0/driver-mapping/src/main/java/com/datastax/driver/mapping/annotations

【问题讨论】:

    标签: java enums cassandra datastax-java-driver


    【解决方案1】:

    看起来对 @Enumerated 的支持已被删除。现在,驱动程序附加中的编解码器提供了枚举支持。查看这两张票以获取更多信息:JAVA-605JAVA-846

    example 您的枚举代码可能如下所示:

    [使用]EnumOrdinalCodecEnumNameCodec

     java    
     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;
         ...
     }
    

    我们正在修复文档。

    【讨论】:

    • 谢谢,在发布问题后我找到了编解码器,不幸的是我很着急,很困惑并迅速编写了我自己的编解码器而不是使用 EnumNameCodec...我将切换到 EnumNameCodec(我'我只是做一个 PoC,对生产没有任何要求,但最好还是使用官方编解码器)。
    猜你喜欢
    • 2023-04-03
    • 2017-06-16
    • 2016-02-26
    • 2019-09-28
    • 1970-01-01
    • 2016-04-19
    • 2020-10-20
    • 2015-08-05
    • 2019-06-28
    相关资源
    最近更新 更多