0

我正在转换为休眠 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());

谢谢。

4

1 回答 1

0

解决了,我需要一个匹配

criteria.createAlias("myDetail", "md");

IE:

root.join(MyClass_.myDetail);

由于查询没有对关系进行任何选择,所以我没有进行连接。

似乎我也不必检查连接是否为空。只需进行连接就足够了。

于 2016-11-17T09:56:21.077 回答