Как использовать составную сущность в spring-data-cassandra?

#spring-data #spring-data-cassandra

#spring-data #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 as @Transient и выполнять некоторую сериализацию самостоятельно? Я пытался аннотировать свой класс с @Persistent помощью, но получал сообщение об PrimaryKey ошибке missing on Location . Я не могу понять, зачем нужен первичный ключ…

Ответ №1:

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

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

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

Спасибо.

Комментарии:

1. Запрос функции: github.com/spring-projects/spring-data-cassandra/issues/16