我正在转换为hibernate 5.2.4并使用CriteriaQuery。在测试文件上的空连接时遇到一些问题。这就是我之前所做的工作。
@Entity
public class MyClass {
....
@ManyToOne(..)
public MyDetail getMyDetail() {
return myDetail;
}
}
Criteria criteria = session.createCriteria(MyClass.class);
criteria.createAlias("myDetail", "md");
criteria.add(Restrictions.isNotNull("myDetail"));
我一直在检查,有时它不起作用:
andPredicate = builder.and(andPredicate, builder.isNotNull(
root.get(MyClass_.myDetail)));
有没有正确的方法呢?我试图创建连接并测试null,但这也不起作用:
Join<MyClass, MyDetail> myJoin = root.join(MyClass_.myDetail);
andPredicate = builder.and(andPredicate, myJoin.isNotNull());
感谢。
答案 0 :(得分:0)
解决了,我需要一个匹配的
criteria.createAlias("myDetail", "md");
即:
root.join(MyClass_.myDetail);
由于查询没有对关系进行任何选择,所以我没有进行连接。
似乎我也不必检查连接是否为空。只是进行连接就足够了。