【问题标题】:JPA - Paginate a list of childsJPA - 对孩子列表进行分页
【发布时间】: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 查询。

标签: spring spring-boot jpa many-to-many


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2021-07-11
    • 2023-03-08
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多