Spring Data JPA. Pagination for child entities(弹簧数据 JPA.子实体的分页)
问题描述
我将 Spring Data JPA 与 Spring Boot 版本 1.3.6.RELEASE 与内存数据库一起使用.
I'm using Spring Data JPA with Spring boot version 1.3.6.RELEASE with in-memory database.
我想知道如何从父实体对子实体进行分页.将 fetch 设置为 LAZY 对我来说不是解决方案.
I'm wondering how to paginate the child entities from a parent entity. Setting fetch to LAZY is not a solution for me.
这是用例:
- Parent 与 Childentity 具有单向 oneToMany 关系.
- 一个Parent的Child数量可以达到100,000(LAZY不是解决办法)
- 我不想让所有孩子进行分页(出于 CPU 和内存原因)
- Parent has an unidirectional oneToMany relation with Child entity.
- The number of Child for one Parent can reach 100,000 (LAZY is not a solution)
- I don't want to fetch all the child to do the pagination (For CPU and Memory reason)
这是一个代码示例:
@Entity
public class Parent{
@Id
private Integer id;
@OneToMany
private List<Child> childs;
}
@Entity
public class Child {
@Id
private Integer id;
}
public interface ParentRepository extends JpaRepository<Parent, Integer>{}
public interface ChildRepository extends JpaRepository<Child, Integer>{}
我在父存储库中尝试过此操作失败:
I've tried this in the Parent repository unsuccessfully :
Page<Child> findById(int id, Pageable pageable);
这将返回父实体,而不是子实体.
This returns a Parent entity, not a Child entity.
知道怎么做吗?
推荐答案
下面是一个代码示例,可以获取知道父实体的子实体.请注意,此查询将返回 Child 的分页结果.
Here is a sample of code that can fetch the child entities knowing the parent. Note that this query will return a paginated result of Child.
/**
* Find Child entities knowing the Parent.
*/
@Query("select child from Parent p inner join p.childs child where p = :parent")
public Page<Child> findBy(@Param("parent") Parent parent, Pageable pageable);
你可以这样使用它:
Page<Child> findBy = repo.findBy(parent, new PageRequest(page, size));
这篇关于弹簧数据 JPA.子实体的分页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:弹簧数据 JPA.子实体的分页
基础教程推荐
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 降序排序:Java Map 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01