Sil*_*Nak 0 java hibernate jpa jpql
在我的软件中,我有一个实体(我们称之为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;
}
Run Code Online (Sandbox Code Playgroud)
Member请注意,和之间没有双向映射State,该映射是在关系 ( ) 的非拥有方声明的Member。在 SQL 中我会创建一个像这样的查询:
public class Member {
@JoinColumn(name = "MEMBER_ID")
@OneToMany
private List<State> states;
@Column
private String name;
}
public class State {
@Column
private int property;
}
Run Code Online (Sandbox Code Playgroud)
但我不知道有什么方法可以在 JPQL 中实现相同的功能,而无需在关系的拥有方进行映射。有没有什么方法可以实现这一点而不必费心双向映射?
JPA 允许在子查询 from 子句中使用集合引用,因此您可以使用:
SELECT m.name
FROM Member m
WHERE NOT EXISTS(
SELECT 1
FROM m.states s
WHERE s.property = 5
)
Run Code Online (Sandbox Code Playgroud)
这将准确生成您想要的 SQL。
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |