1

在一个新项目中,我必须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

4

1 回答 1

6

您可能正在@Tablejavax.persistence. 如果您从 导入相同的注释org.springframework.data.cassandra.mapping,那么您应该没问题。

于 2018-10-30T14:55:13.367 回答