에 가입하기 전에 필터 데이터를 < -> 회원 < - 관계> 그룹 :JPA : 나는 고전적인 사용자를 가지고
@Entity
public class User
{
@Id
private Long id;
private String name;
@OneToMany(mappedBy = "user")
private List<Membership> memberships
}
@Entity
public class Group
{
@Id
private Long id;
private String name;
@OneToMany(mappedBy = "group")
private List<Membership> members;
}
@Entity
public class Membership
{
@Id private Long id;
private String status;
@ManyToOne private User user;
@ManyToOne private Group group;
}
가 지금은 기존의 모든 그룹과 또한에 관심이 원하는는 알고 특정 사용자의 회원 상태 (있는 경우). 결과는 Group 및 Membership 객체 (또는 특정 사용자에 대한 멤버쉽이없는 경우 Group 객체 및 null)의 튜플이어야합니다. SQL에서 그게 내가 관심이있는 회원 자격의 사용자에 대한 가입하기 전에 데이터를 필터링 조인 조건에서
select g.*, m.* from `group` g left join membership m on g.id = m.group_id and m.user_id = 1
공지 사항 추가 제한 and m.user_id = 1
같은 것을 할 것이다.
그럴 수 없어 JPA로 이것을 수행하는 방법을 찾는 것 같습니다. 필자가 아는 한, 조인의 subselect는 JPA에서는 불가능하며 위와 같은 것은 JPQL에서 직접 작성할 수 없습니다.
내가 여기 잘못된 길을 완전히 지나친 것처럼 보였고, 이것에 대한 신선한 시각을 가진 사람이 나에게 포인터를 줄 수 있다면 감사 할 것입니다.
는업데이트 :
이 JSR 338은 (JPA 2.1) ON 조건에 대한 지원을 추가 할 것으로 보인다. 그때까지 어떻게이 한계를 극복 할 수 있습니까?
둘 다 내 질문에 대한 답변이 JPA 외부에서만 작동하므로 정확하지 않습니다. – Uli