我想联接两个表并在联接查询中删除on子句以设置新的自定义on子句,但是我总是从“ joinb”中得到一个空谓词,因此无法连接更多条件。我的下面的代码。
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<myClass> query = cb.createQuery(myClass.class);
Root<a> a = query.from(a.class);
Join<a, b> joinb = a.join("b", JoinType.INNER);
Predicate joinBOn = b.getOn();
b.on(cb.or(joinBOn, cb.or("condition1", "condition2")));
这里的问题是joinBOn始终为null。我是新手,所以我不知道发生了什么。
根据记录,getOn()
返回与谓词ON限制相对应的谓词join,如果未指定ON条件,则为null。
在这种情况下,显然没有指定开启条件,因此预期为null
。这不是问题,因为不需要获取当前的ON限制:
Predicate condition1 = ...
Predicate condition2 = ...
b.on(cb.or(condition1, condition2));