一尘不染

选择不存在Hibernate OneToOne关联的实体

hibernate

我有两个具有双向@OneToOne映射的类。

Class A {
@OneToOne(fetch = FetchType.Lazy, mappedBy="a")
private B b;
}

Class B {
@OneToOne(fetch = FetchType.Eager)
private A a;
}

我需要编写代码来检索B的所有实例,这些实例没有与之关联的A实例。我还需要为所有没有B的A编写类似的查询。

我努力了:

Criteria criteria = getSession().createCriteria(B.class)
criteria.add(Restrictions.isNull("a")

但这似乎总是返回null。有什么想法吗?


阅读 303

收藏
2020-06-20

共1个答案

一尘不染

这对两个方向都应该起作用:

Criteria criteria = session.createCriteria(B.class, "b");
criteria.createAlias("b.a", "a", Criteria.LEFT_JOIN);
criteria.add(Restrictions.isNull("a.id"));
2020-06-20