JPA - 对孩子列表进行分页
Posted
技术标签:
【中文标题】JPA - 对孩子列表进行分页【英文标题】:JPA - Paginate a list of childs 【发布时间】:2020-02-18 21:30:50 【问题描述】:我目前正在开发一个使用 Spring 作为后端的应用程序,并且在使用 JpaRepository 时遇到了一些问题。
我们有一个系统,其中一些成员可以在一些组织中,所以一个成员可以在多个组织中,一个组织可以有多个成员。
在我的会员课程中,我有:
@ManyToMany
private List<Organization> organizations;
在组织类中:
@ManyToMany
private List<Member> members;
这是我的问题: 我需要返回组织成员的分页列表,问题是我想使用 JpaRepository 来实现分页系统的最简单实现,但我无法检索组织中的成员。
这是我在成员存储库中尝试过的:
Page<Member> findAllByOrganizationsContains(@Param("organization") Organization organization, Pageable pageable);
但这没有给我任何回报,问题是我不明白如何从一个组织中获取成员,因为这个成员可以在多个组织中。
有什么想法吗?
【问题讨论】:
使用内部联接编写您自己的 Hql 查询。 【参考方案1】:这样使用
@Entity
public class Organization
@Column(name = "organization_id")
private long organizationId;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "organization_members",
joinColumns = @JoinColumn(name = "organization_id") ,
inverseJoinColumns = @JoinColumn(name = "member_id") )
private List<Member> organizationMembers= new ArrayList<Member>();
@Entity
public class Member
@Column(name = "member_id")
private long memberId;
在您的存储库中
@Query("SELECT m FROM Organization o JOIN o.organizationMembers m where o.organizationId = ?1")
Page<Members> getAllMembersByOrganization(long organizationId , Pageable pageable);
【讨论】:
以上是关于JPA - 对孩子列表进行分页的主要内容,如果未能解决你的问题,请参考以下文章
如何添加到列表的链接以使用 spring-jpa 进行排序?