Java Spring Cassandra存储库First3返回全部
方法按参数返回所有值,不受3的数量限制Java Spring Cassandra存储库First3返回全部,java,spring,cassandra,Java,Spring,Cassandra,方法按参数返回所有值,不受3的数量限制 public interface PersonalOfferRepository extends CassandraRepository<PersonalOffer> { @Query("SELECT * FROM personal_offers WHERE core_id = ?0") List<PersonalOffer> findFirst3ByCoreIdOrderByPriorityAsc(TypeCustome
public interface PersonalOfferRepository extends CassandraRepository<PersonalOffer> {
@Query("SELECT * FROM personal_offers WHERE core_id = ?0")
List<PersonalOffer> findFirst3ByCoreIdOrderByPriorityAsc(TypeCustomerCode typeCustomerCode);
}
public interface personalOfferPropository扩展了CassandraRepository{
@查询(“从core\u id=?0的个人\u优惠中选择*)
列出findFirst3ByCoreIdOrderByPriorityAsc(类型CustomerCode类型CustomerCode);
}
UPD。CrudeRepository也存在同样的错误您应该使用cassandra扩展CassandraRepository,而不是目前Spring数据cassandra中的分页/切片功能。他们的问题追踪器上有一个公开的问题 如果支持,您还需要知道存储库查询关键字(如
First3
,ByCoreId
,OrderBy
,…)仅在不使用@query
时才起作用。如果使用的是@Query
注释,则覆盖了方法名查询
如果只获取3个结果,并且使用的是自定义查询,则必须使用Pageable
参数,如下所示:
@Query("SELECT * FROM personal_offers WHERE core_id = ?0")
Page<PersonalOffer> findByCoreId(TypeCustomerCode typeCustomerCode, Pageable page);
但是,由于它还不受支持,您必须手动检索前三个结果。从当前的spring数据cassandra 2.0.7.RELEASE开始,您可以将“切片”与CassandraPageRequest.first(3)一起使用。 请看这里:
更改为cassandra repository,结果与CrudeRespository相同。尝试实现这两种解决方案,但都返回了22行而不是3行列表FindFirst3 ByCoreIDorderByPriorityAsc(TypeCustomerCode TypeCustomerCode)@查询(“从core\u id=?0的personal\u offers中选择*”)列表findByCoreId(类型CustomerCode类型CustomerCode,可分页页面);现在如何调用该方法?PersonalOfferPresository.findByCoreId(coredId,newPageRequest(0,3,Sort.Direction.ASC,“priority”)).size();PersonalOfferPresository.findFirst3ByCoreIdOrderByPriorityAsc(coredId).size();您是否可以将
Pageable
方法的返回类型更改为Page
?原因:org.springframework.dao.InvalidDataAccessApiUsageException:org.springframework.data.cassandra.repository.query.CassandraQueryMethod.verify不支持切片和页面查询(CassandraQueryMethod.java:82)
repository.findByCoreId(..., new PageRequest(0, 3, Direction.ASC, "priority")).getContent();