Spring Data 在查询 Cassandra 时使用实体类名而不是 @Table("table_name")

11t*_*ion 1 spring cassandra spring-data

在一个新项目中,我必须Cassandra用作持久层。

我正在使用Spring Data存储库来运行查询。我的实体如下所示

@Table("my_customer")
public class CustomerEntity {
    @PrimaryKey
    private Long id;
    ....
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用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)
Run Code Online (Sandbox Code Playgroud)

似乎 spring 没有检测@Table("my_customer")到运行查询中提到的表名。它应该在查询中使用my_customer而不是customerentity作为表名。

难道我做错了什么?它适用JPA于关系数据库的存储库。我也试过在@Entity(name = "my_customer")没有运气的情况下注释实体类。(我知道它只会影响CQL/JPQL

Bra*_*zic 6

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