Кундера Кассандра - составление карты

В моей схеме cassandra (V 3.0.1) у меня есть столбец с типом карты. Семейство столбцов:

CREATE TABLE test.Test (
  id uuid,
  targetMisc map<text, double>,
  PRIMARY KEY (id));

Я использую Kundera (V3.2) с com.impetus.client.cassandra.thrift.ThriftClientFactory, и моя тестовая сущность выглядит так:

@Entity
@Table(name="test")
public class Test implements Serializable {

    private static final long serialVersionUID = -7665632851374123059L;

    @Id
    @Column
    private UUID id;


    @Column(name="targetmisc")
    private Map<String, BigDecimal> targetMisc;

}

Когда я хочу запросить данные из таблицы Test через

EntityManager manager = entityManagerFactory.createEntityManager(getProperties());
result = new manager.find(Test.class, id); 

Я получаю сообщение об ошибке, что карта не может быть сопоставлена.

Трассировки стека:

16:26:34.165 [http-bio-8080-exec-3] ERROR e5bc0aec-802b-459f-a24e-675037811135 com.impetus.client.cassandra.datahandler.CassandraDataHandlerBase - Error while setting fieldtargetMisc value via CQL, Caused by:
org.apache.cassandra.serializers.MarshalException: Unexpected extraneous bytes after map value
at org.apache.cassandra.serializers.MapSerializer.deserializeForNativeProtocol(MapSerializer.java:109) ~[cassandra-all-2.2.2.jar:2.2.2]

Кто-нибудь не знает, где проблема? Я использую CQL версии 3, и другие объекты без столбца карты работают.


person K.E.    schedule 25.01.2016    source источник
comment
См. stackoverflow.com/questions/35008702/   -  person Chhavi Gangwal    schedule 27.01.2016


Ответы (1)


Я нашел решение этой проблемы. При использовании Cassandra 2.2 вместо 3.0 и изменении private Map<String, BigDecimal> targetMisc; на private Map<String, Double> targetMisc; сопоставление работает правильно.

Похоже, что у Кундеры 3.2 есть проблема с версией 3 Кассандры. Кундера использует cassandra-driver-core-2.1.5.jar и ссылается на это http://docs.datastax.com/en/developer/driver-matrix/doc/common/driverMatrix.html?scroll=driverMatrix__driver-cmpt-matrix нет совместимости с этой версией джава драйвер.

РЕДАКТИРОВАТЬ: Здесь (совместимость Кундеры с Cassandra 3.0.1) вы можете видеть, что Kundera 2.2 не имеет полной поддержки Cassandra 3.*

person K.E.    schedule 26.01.2016