Как использовать составной объект в spring-data-cassandra?

Я настраиваю spring-data-cassandra в первый раз и имею такой класс:

@Table(value = "contact")
public class Contact {
    @Id
    UUID id;

    ...
    Location Location;
    ...

    public void setLocation(Location location) {
        this.location = location;
    }

    public Location getLocation() {
        return location;
    }
}

Это дает мне ошибку при запуске:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySQLTransactionRepository': Invocation of init method failed; nested exception is org.springframework.data.cassandra.mapping.VerifierMappingExceptions: com.foo.backend.core.Location:
Cassandra entities must have the @Table, @Persistent or @PrimaryKeyClass Annotation
....

Исходя из фона spring-data-jpa, раньше было достаточно просто аннотировать Location с помощью @Embeddable. Похоже, это не работает с spring-data-cassandra. Как использовать составные объекты с spring-data-cassandra?

Придется ли аннотировать location как @Transient и самому выполнять некоторую сериализацию? Я пытался аннотировать свой класс с помощью @Persistent, но получал ошибку об отсутствии PrimaryKey в Location. Я не могу понять, зачем нужен первичный ключ...


person Ztyx    schedule 17.06.2014    source источник


Ответы (1)


Из-за нереляционных деталей Cassandra вы обнаружите, что она не работает как JPA.

В Cassandra нет объединений, поэтому встраивание другой таблицы в качестве атрибута таблицы не допускается.

Встраиваемые типы в настоящее время не поддерживаются. Если вы хотите уточнить запрос на функцию, создайте Jira для SDC*.

Спасибо.

person David Webb    schedule 17.06.2014
comment
Запрос функции: github.com/spring-projects/spring-data-cassandra. /вопросы/16 - person Ztyx; 19.06.2014