JPA - разбить список детей - PullRequest
       19

JPA - разбить список детей

0 голосов
/ 22 октября 2019

В настоящее время я занимаюсь разработкой приложения с использованием Spring в качестве бэкэнда, и у меня возникли некоторые проблемы с JpaRepository.

У нас есть система с несколькими членами, которая может быть в некоторых организациях, поэтому член может быть в нескольких организациях иОрганизация может иметь несколько членов.

В моем классе Member у меня есть:

@ManyToMany
private List<Organization> organizations;

А в классе Организации:

@ManyToMany
private List<Member> members;

Вот моя проблема: янеобходимо вернуть список членов организации, разбитый на страницы, проблема в том, что я хочу использовать JpaRepository, чтобы иметь простейшую реализацию системы нумерации страниц, но мне не удается получить членов, находящихся в организации.

Вот что я попробовал в репозитории участников:

   Page<Member> findAllByOrganizationsContains(@Param("organization") Organization organization, Pageable pageable);

Но это ничего не возвращает мне, проблема в том, что я не понимаю, как получить членов из организации, поскольку этот участник может бытьв нескольких организациях.

Есть идеи?

1 Ответ

1 голос
/ 23 октября 2019

Используйте этот способ

@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);
...