Spring Data использует имя класса Entity вместо @Table ("table_name") в запросе для Cassandra - PullRequest
0 голосов
/ 30 октября 2018

В новом проекте я должен использовать Cassandra в качестве постоянного слоя.

Я использую Spring Data репозитории для запуска запросов. Моя сущность выглядит ниже

@Table("my_customer")
public class CustomerEntity {
    @PrimaryKey
    private Long id;
    ....
}

Когда я пытаюсь получить количество строк в этой таблице, используя repository.count(), выдается следующее исключение

org.springframework.data.cassandra.CassandraInvalidQueryException: Query; CQL [SELECT count(*) FROM customerentity;]; unconfigured table customerentity; nested exception is com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table customerentity
    at org.springframework.data.cassandra.core.cql.CassandraExceptionTranslator.translate(CassandraExceptionTranslator.java:139)
    at org.springframework.data.cassandra.core.cql.CassandraAccessor.translate(CassandraAccessor.java:334)
    at org.springframework.data.cassandra.core.cql.CqlTemplate.translateException(CqlTemplate.java:732)
    at org.springframework.data.cassandra.core.cql.CqlTemplate.query(CqlTemplate.java:298)

Похоже, что Spring не определяет имя таблицы, указанное в @Table("my_customer") для выполнения запроса. В качестве имени таблицы в запросе следует использовать my_customer вместо customerentity.

Я что-то не так делаю? Он отлично работает с JPA хранилищами для реляционной базы данных. Я также попытался аннотировать класс сущности с помощью @Entity(name = "my_customer"), но безуспешно. (Я знаю, что это повлияет только на CQL/JPQL)

1 Ответ

0 голосов
/ 30 октября 2018

Вы, вероятно, импортируете аннотацию @Table из javax.persistence. Если вы импортируете ту же аннотацию из org.springframework.data.cassandra.mapping, то все будет в порядке.

...