В моей схеме 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, и другие объекты без столбца карты работают.