Java JPA:检查集合中是否有具有属性的成员
在我的软件中,我有一个实体(我们称之为成员)和另一个实体(我们称之为状态)的集合。我需要编写的查询应该返回没有特定属性值e的状态的所有成员。G五, 以下是实体的相关部分:Java JPA:检查集合中是否有具有属性的成员,java,hibernate,jpa,jpql,Java,Hibernate,Jpa,Jpql,在我的软件中,我有一个实体(我们称之为成员)和另一个实体(我们称之为状态)的集合。我需要编写的查询应该返回没有特定属性值e的状态的所有成员。G五, 以下是实体的相关部分: public class Member { @JoinColumn(name = "MEMBER_ID") @OneToMany private List<State> states; @Column private String name; } pu
public class Member {
@JoinColumn(name = "MEMBER_ID")
@OneToMany
private List<State> states;
@Column
private String name;
}
public class State {
@Column
private int property;
}
但是我不知道有什么方法可以在JPQL中实现相同的功能,而不需要在关系的拥有方进行映射。有没有什么方法可以实现这一点而不必费心于双向映射?试试这样的方法
select m.name from Member m where not exists(
from Member m1 join m1.states s where s.property = 5
)
或
您可以这样编写本机查询
select m.name from Member m where not exists(
from Member m1 join m1.states s where s.property = 5
)
从成员中选择名称,其中成员id不在“从状态中选择id”
其中property=5
JPA允许在子查询from子句中使用集合引用,因此您可以使用:
SELECT m.name
FROM Member m
WHERE NOT EXISTS(
SELECT 1
FROM m.states s
WHERE s.property = 5
)
这将生成您想要的SQL