[英]Hibernate Criteria Left Excluding JOIN
我不知道如何使用Hibernate Criteria來做到這一點
SELECT *
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL
有Hibernate映射之類的
@Entity
class A{
@Id
@Column(name = "ID")
private String ID;
... // fields
}
@Entity
class B{
... // fields
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "A_ID", referencedColumnName = "ID")
@Cascade(CascadeType.DETACH)
private A a;
... // fields
}
所以我需要獲得所有未被B引用的A的列表
之前沒有嘗試過,但這樣的事情應該有效:
select * from Table_A a
where a not in (
select b.a from Table_B b )
這當然是在HQL中
標准可能如下所示:
DetachedCriteria subquery = DetachedCriteria.forClass(B.class)
.setProjection( Property.forName("a.ID") )
.add(Restrictions.isNotNull("a.ID"));
session.createCriteria(A.class)
.add ( Property.forName("ID").notIn(subquery) )
.list();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.