【问题标题】:Spring Cassandra Repository First3 return allSpring Cassandra Repository First3 全部返回
【发布时间】:2017-09-07 13:55:38
【问题描述】:

方法是通过参数返回所有值,不受3个数量限制

public interface PersonalOfferRepository extends CassandraRepository<PersonalOffer> {

  @Query("SELECT * FROM personal_offers WHERE core_id = ?0")
  List<PersonalOffer> findFirst3ByCoreIdOrderByPriorityAsc(TypeCustomerCode typeCustomerCode);

}

UPD。 CrudeRepository 也有同样的错误

【问题讨论】:

    标签: java spring cassandra


    【解决方案1】:

    您应该使用 cassandra 扩展 CassandraRepository 而不是 CrudRepository

    【讨论】:

    • 更改为 cassandra 存储库,结果与 CrudeRepository 相同
    【解决方案2】:

    目前在 Spring Data Cassandra 中有 no support 用于分页/切片。在他们的问题跟踪器中打开了a ticket

    如果支持,您还需要知道存储库查询关键字(如 First3ByCoreIdOrderBy、...)仅在您不使用 @Query 时才有效。如果您使用 @Query 注释,您将覆盖方法名称查询。

    如果您只获取 3 个结果并且您使用的是自定义查询,那么您将不得不像这样使用 Pageable 参数:

    @Query("SELECT * FROM personal_offers WHERE core_id = ?0")
    Page<PersonalOffer> findByCoreId(TypeCustomerCode typeCustomerCode, Pageable page);
    

    之后你可以这样调用你的方法:

    repository.findByCoreId(..., new PageRequest(0, 3, Direction.ASC, "priority")).getContent();
    

    但由于(尚)不支持,您必须手动检索前三个结果。

    【讨论】:

    • 试图实现这两种解决方案,但都返回了 22 行而不是 3 List findFirst3ByCoreIdOrderByPriorityAsc(TypeCustomerCode typeCustomerCode); @Query("SELECT * FROM personal_offers WHERE core_id = ?0") List findByCoreId(TypeCustomerCode typeCustomerCode, Pageable page);
    • 你现在怎么调用那个方法?
    • personalOfferRepository.findByCoreId(coredId, new PageRequest(0, 3, Sort.Direction.ASC, "priority")).size(); personalOfferRepository.findFirst3ByCoreIdOrderByPriorityAsc(coredId).size();
    • 能不能把Pageable的方法的返回类型也改成Page&lt;PersonalOffer&gt;
    • 引起:org.springframework.dao.InvalidDataAccessApiUsageException:org.springframework.data.cassandra.repository.query.CassandraQueryMethod.verify(CassandraQueryMethod.java:82)不支持切片和页面查询/跨度>
    【解决方案3】:

    从当前的 spring-data-cassandra 2.0.7.RELEASE 开始,您可以将“Slice”与CassandraPageRequest.first(3) 一起使用 看看这里: https://github.com/spring-projects/spring-data-cassandra/pull/114

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-12
      • 2021-11-18
      • 1970-01-01
      • 2015-04-11
      • 2019-12-25
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      相关资源
      最近更新 更多