条件构建器中的Join中的getOn无效

问题描述 投票:0回答:1

我想联接两个表并在联接查询中删除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。我是新手,所以我不知道发生了什么。

java hibernate jpa hibernate-criteria criteria-api
1个回答
0
投票

根据记录,getOn()

返回与谓词ON限制相对应的谓词join,如果未指定ON条件,则为null。

在这种情况下,显然没有指定开启条件,因此预期为null。这不是问题,因为不需要获取当前的ON限制:

Predicate condition1 = ...
Predicate condition2 = ...
b.on(cb.or(condition1, condition2));
© www.soinside.com 2019 - 2024. All rights reserved.