【发布时间】:2020-08-26 11:34:54
【问题描述】:
在我的软件中,我有一个实体(我们称之为Member)和另一个实体的集合(我们称之为State)。我需要编写的查询应该返回所有没有State 且具有特定属性值的成员(例如5)。
以下是实体的相关部分:
public class Member {
@JoinColumn(name = "MEMBER_ID")
@OneToMany
private List<State> states;
@Column
private String name;
}
public class State {
@Column
private int property;
}
请注意,Member 和 State 之间没有双向映射,映射是在关系的非拥有方 (Member) 上声明的。在 SQL 中,我会创建一个这样的查询:
SELECT m.name
FROM Member m
WHERE NOT EXISTS (
SELECT *
FROM State s
WHERE
m.id = s.member_id
AND s.property = 5
);
但我不知道有任何方法可以在 JPQL 中实现相同的事情,而无需在关系的拥有方进行映射。有什么方法可以实现这一点而不必费心双向映射?
【问题讨论】: