我正在使用Spring Data JPA和Spring boot版本1.3.6.RELEASE以及内存数据库。我想知道如何从父实体中进行子实体的分页,将获取模式设置为LAZY对我来说不是解决方案。以下是用例:
1. 父实体与子实体之间有单向 oneToMany 的关系。
2. 一个父实体下可能会有10万个子实体(使用LAZY加载不可行)。
3. 我不想为了分页而一次性获取所有子实体(出于CPU和内存原因)。
以下是代码示例:
1. 父实体与子实体之间有单向 oneToMany 的关系。
2. 一个父实体下可能会有10万个子实体(使用LAZY加载不可行)。
3. 我不想为了分页而一次性获取所有子实体(出于CPU和内存原因)。
以下是代码示例:
@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>{}
我曾经在父代码库中尝试过这个方法,但失败了:
Page<Child> findById(int id, Pageable pageable);
这将返回一个父实体,而不是子实体。
有什么想法如何做到这一点吗?
select child from Parent p inner join p.children child where p = :parent
。 - JB Nizet