对条件查询JPA

时间:2019-02-18 09:25:32

标签: java mysql jpa criteriaquery

在这种情况下,我无法在两个表之一之间的左连接上创建过滤器,其中一个条件是空检查。

我的查询就是这样。

select count(*)  
from orders o 
left outer join payments p on o.id=p.o_id 
where o.uid_id=1 and p.o_id is null

我正尝试使用条件查询进行左联接,但我无法弄清楚如何将空检查放入条件查询

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Orders> query = cb.createQuery(Orders.class);
Root<Orders> ordersRoot = query.from(Orders.class);
Join<Orders, Payments> join = ordersRoot.join(JOIN_COLUMN, JoinType.LEFT);
List<Predicate> predicates = new ArrayList<>();
predicates.addAll(getPredicates(cb, ordersRoot)); //this method gives other predicates on order table
query.where(predicates.toArray(new Predicate[predicates.size()]));
query.select(ordersRoot).distinct(true);
TypedQuery<Orders> query = entityManager.createQuery(criteriaQuery);
List<Orders> list = query.getResultList();

这是我的标准Java代码。 在此之前,我尚未为此检查添加,并且p.o_id为null

订单和付款表具有一对多关系。

0 个答案:

没有答案