gpt4 book ai didi

java - 不包括 JOIN 的 Hibernate 条件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:31 25 4
gpt4 key购买 nike

我不知道如何使用 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();

关于java - 不包括 JOIN 的 Hibernate 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20611423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com