使用Cassandra @Query的Spring数据查找本机表名而不是实体名

时间:2018-11-21 03:04:32

标签: cassandra spring-data

我正在用Cassandra创建一个Spring数据存储库。我必须使用@Query来使用CQL来获得一些自定义结果,而不是findBy方法。

我遇到一个例外,那就是未配置表名,在调用Cassandra时,似乎@Query使用的是实际名称而不是实体名称。

这就是我的设置

@Table("book")
public class BookEntity {
...
}

import java.util.List;

import org.baeldung.spring.data.cassandra.model.BookEntity;
import org.springframework.data.cassandra.repository.CassandraRepository;
import org.springframework.data.cassandra.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface BookRepository extends CassandraRepository<BookEntity> {

    @Query("select b.isbn from BookEntity where and publisher=:publisher", allowFiltering = true)
    List<String> findIdsWithPublisher(@Param("publisher") String publisher);
}

当我调用方法findIdsWithPublisher()时,我得到一个未配置bookentity的异常。另一个没有使用实体名称或实体属性名称的指示是,当我在查询中使用别名,例如from BookEntity b where b.publisher = ...或任何实体名称与其本机名称不同的列名称(例如updatedDate (native updt_date))时,抛出诸如no viable alternative found for之类的异常。

@Query仅接受本机查询还是我做错了什么?

任何提示都值得赞赏。

0 个答案:

没有答案