我使用Spring Data JPA和Spring启动版本1.3.6.RELEASE与内存数据库。
我想知道如何从父实体对子实体进行分页。 将抓取设置为 LAZY 对我来说不是解决方案。
以下是用例:
以下是代码示例:
@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>{}
我在Parent资源库中尝试过这种方法失败了:
Page<Child> findById(int id, Pageable pageable);
这将返回Parent实体,而不是Child实体。
知道怎么做吗?
答案 0 :(得分:1)
假设父母被称为“父母”,您还可以执行以下操作:
repo.findAllByParent(parent, pageable)
;
答案 1 :(得分:0)
以下是可以获取知道父级的子实体的代码示例。 请注意,此查询将返回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));