选择不存在Hibernate OneToOne关联的实体
我有两个类,它们之间有双向@OneToOne映射选择不存在Hibernate OneToOne关联的实体,hibernate,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(
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。想法?这应该对两个方向都有效:
Criteria criteria = session.createCriteria(B.class, "b");
criteria.createAlias("b.a", "a", Criteria.LEFT_JOIN);
criteria.add(Restrictions.isNull("a.id"));
Hibernate中有一个记录在案的问题,即 此外,在同一问题上还有一个未决的Jira
在这个问题得到解决之前,JB Nizet提供的解决方案非常有效。有效。无法找出为什么isNull使用OneToOne将null添加到我的查询中的错误属性中。作为
条件。LEFT\u JOIN
已取消指定,现在可以使用条件。createAlias(“b.a”,“a”,JoinType.LEFT\u OUTER\u JOIN)代码>