Java JPA:加入前筛选数据
我有一个典型的用户成员组关系:Java JPA:加入前筛选数据,java,jpa,Java,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; privat
@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;
}
请注意join谓词中的附加限制和m.user_id=1
,它在加入之前为我感兴趣的成员身份的用户过滤数据
我似乎找不到一种方法来用JPA来做到这一点。据我所知,连接中的子选择在JPA中是不可能的,类似于上面的内容不能直接在JPQL中编写
看来我完全走错了方向,如果有人对此有新的看法,能给我一个指点,我将不胜感激
更新:
看起来(JPA2.1)将增加对ON条件的支持。在此之前,我如何克服这个限制?如果您使用的是EclipseLink,EclipseLink 2.4中支持ON子句
否则,您可以使用本机SQL查询。不完全是对我的问题的回答,因为这两种查询都只在JPA之外工作。