Кундера Кассандра JPQL с составным ключом

Я использую Kundera JPA для Cassandra. Версия Кундеры: 3.8

Вот мои определения сущности: -

@Embeddable
public class PartitionKey implements Serializable
{
    @Column(name = "ID")
    private String Id;

    @Column (name = "TYPE")
    private String Type;
}

@Embeddable
public class CompoundKey implements Serializable
{
    @Embedded
    private PartitionKey partitionKey;
    @Column(name = "LABEL")
    private String label;
}

@Embeddable
public class Comment
{
    @Column(name="comment")
    private String comment;
}

@Entity
@Table(name = "MY_ENTITY", schema = "xyz@cassandra_pu")
public class MyEntity
{
    @EmbeddedId
    private CompoundKey primaryKey;

    @ElementCollection
    @Column(name = "COMMENTS")
    private List<Comments> comments;
}

Вот фрагмент, используемый для поиска: -

Query q = entityManager.createQuery("Select e from MyEntity e where e.primaryKey.partitionKey.Id = :Id and e.primaryKey.partitionKey.Type = :Type");
    q2.setParameter("Id", "ID1");
    q2.setParameter("Type", "BOOK");
    List<MyEntity> list=q2.getResultList();

Я получаю исключение нулевого указателя для вышеуказанного: -

java.lang.NullPointerException: null
    at         com.impetus.client.cassandra.datahandler.CassandraDataHandlerBase.setElementC    ollection(CassandraDataHandlerBase.java:1566) ~[kundera-cassandra-    3.9.1.jar:na]
    at     com.impetus.client.cassandra.datahandler.CassandraDataHandlerBase.populateVia    Thrift(CassandraDataHandlerBase.java:1154) ~[kundera-cassandra-    3.9.1.jar:na]
    at     com.impetus.client.cassandra.datahandler.CassandraDataHandlerBase.onColumn(Ca    ssandraDataHandlerBase.java:1054) ~[kundera-cassandra-3.9.1.jar:na]
    at     com.impetus.client.cassandra.datahandler.CassandraDataHandlerBase.populateEnt    ity(CassandraDataHandlerBase.java:653) ~[kundera-cassandra-3.9.1.jar:na]
    ... 15 common frames omitted

Вот мой сценарий создания таблицы: -

create TABLE "MY_ENTITY"
(
    "ID" TEXT,
    "TYPE" TEXT,
    "LABEL" TEXT,
    "COMMENTS" list<frozen <"COMMENT">>,
    PRIMARY KEY("ID","TYPE","LABEL")
);

Определение пользовательского типа комментариев:

CREATE TYPE "COMMENT" (
    comment text
);

Если я использую простой объект без составного ключа, запрос работает нормально. Я что-то упустил?

ОБНОВЛЕНИЕ: когда я удаляю атрибут комментариев, все работает нормально.


person TechEnthusiast    schedule 02.08.2017    source источник
comment
Мы добавим исправление как можно скорее и сообщим вам   -  person karthik manchala    schedule 03.08.2017


Ответы (1)


Эта проблема была исправлена!

https://github.com/impetus-opensource/Kundera/issues/953

Он доступен в Кундере 3.10.

person Dev    schedule 12.08.2017
comment
Огромное спасибо. Я попытался собрать магистраль, чтобы проверить исправление. Получаю следующее исключение. [основная] ОШИБКА org.springframework.boot.SpringApplication — Ошибка запуска приложения в com.impetus.client.cassandra.datahandler.CassandraDataHandlerBase.setElementCollectionList(CassandraDataHandlerBase.java:1735) в com.impetus.client.cassandra.datahandler.CassandraDataHandlerBase.setElementCollection(CassandraDataHandlerBase.java:1576) - person TechEnthusiast; 12.08.2017
comment
Устранено указанное выше исключение путем добавления более старой версии cassandra-all. Это известная проблема? Также теперь возникает следующее исключение javax.persistence.PersistenceException: java.lang.ClassCastException: org.apache.cassandra.cql3.FieldIdentifier не может быть приведен к java.nio.ByteBuffer. Что может быть причиной? Используемый запрос: выберите объект из объекта MyEntity - person TechEnthusiast; 12.08.2017
comment
@TechEnthusiast, вы можете общаться с нами по адресу gitter. - person Dev; 14.08.2017