Драйвер Datastax java 3.0.0 Перечислимые аннотации не найдены

Надеюсь, я хорошо читаю документы: http://docs.datastax.com/en/developer/java-driver/3.0/java-driver/reference/crudOperations.html.

Пронумерованная аннотация

Если ваш класс содержит поле типа перечисления, вы используете аннотацию Enumerated.

У меня есть перечисление 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


person acristu    schedule 01.02.2016    source источник


Ответы (1)


Похоже, поддержка @Enumerated была удалена. Теперь поддержка перечислений обеспечивается кодеками в дополнительных драйверах. Ознакомьтесь с этими двумя билетами для получения дополнительной информации: JAVA-605 и JAVA-846.

пример кода вашего перечисления может выглядеть:

[Использовать] EnumOrdinalCodec и EnumNameCodec:

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

Мы исправляем документацию.

person phact    schedule 01.02.2016
comment
Спасибо, после публикации вопроса я нашел кодеки, к сожалению, я торопился, запутался и быстро написал свой собственный кодек вместо использования EnumNameCodec ... Я перейду на EnumNameCodec (я просто делаю PoC, ничего не продюсирую -критично, но все равно лучше использовать официальный кодек). - person acristu; 02.02.2016