【问题标题】:Spring Data PageRequest not returning specified countSpring Data PageRequest 不返回指定的计数
【发布时间】:2015-07-01 11:39:28
【问题描述】:

我正在使用 spring data 的 Pageable 来限制记录获取。我在数据库中有超过 500 个条目,但我只想获取 5 个但它没有正确返回。大多数情况下它返回 2,3 或 4 条记录(每次它返回少于 5 条记录但我在数据库中有 500 条)。所以请帮忙下面给出的服务类和存储库的 me .code

服务代码:

    public List<Client> listAll() {
        Pageable pageable = new PageRequest(0,5);
        return (List<Client>) clientRepository.getAllClient(pageable);
       }

存储库代码:

public interface ClientRepository extends CrudRepository<Client, Long> {

@Query("Select distinct p FROM Client p LEFT JOIN FETCH p.offices  LEFT JOIN FETCH p.users LEFT JOIN FETCH p.firmSeats")
public List<Client> getAllClient(Pageable page);
}

【问题讨论】:

标签: java hibernate jpa spring-data


【解决方案1】:

这里的问题是您为关联指定的 JOIN Fetch 选项造成的。

如果您考虑此语句从数据库返回的结果集,那么它可能包含每个用户的多条记录,例如例如,如果客户 x 有 5 个办公室,则结果集中的所有 5 条记录都来自客户 x。 JPA 层中的后处理然后将其过滤为 1 条记录,因此您在应用程序中只会看到 1 条记录。

删除 JOIN fetch 子句以验证是否是这种情况。如果是这样,您将需要考虑为您的 Query 指定一个自定义 countQuery(这实际上会反映您的主查询,但只是返回计数):

http://codingexplained.com/coding/java/spring-framework/fetch-query-not-working-spring-data-jpa-pageable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2022-01-17
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多