gpt4 book ai didi

java - Spring Data PageRequest 未返回指定计数

转载 作者:行者123 更新时间:2023-11-30 08:14:45 25 4
gpt4 key购买 nike

我正在使用 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);
}

最佳答案

此处的问题是由您为关联指定的 JOIN Fetch 选项造成的。

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

删除 JOIN 获取子句以验证情况是否如此。如果是这样,您将需要考虑为您的查询指定自定义 countQuery(这本质上会镜像您的主查询,但只是返回计数):

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

关于java - Spring Data PageRequest 未返回指定计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29820855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com