我的查询是这样的:
query1 = select a.id from entity1 a where a.id in (:List1)
and not exists (select ex2 from entity2 ex2 where ex2.assignedId = a.id)
union
select ex.assignedId from entity2 ex ,entity3 pi
where ex. entity3Id = pi.id 和 ex.assignedId 在 (:List1)
和 ex.assignedTypeId = :assignedTypeId 和 pi.processStatus = :status
并且不存在
(从 entity2 ex1 中选择 ex1.assignedId , entity3 pi1
其中 ex1.entity3Id = pi1.id和 ex1.assignedId = ex.assignedId
和 ex1.assignedTypeId = :assignedTypeId
和 pi1.processStatus <> :status);
在尝试执行查询时,
查询现有Ids=em.createQuery(query1); //设置所有参数
在 org.hibernate.hql.ast.ParameterTranslationsImpl 的第 87 行抛出 NullPointerException
完全检查了所有的大括号和参数。等效转换在 mysql 中有效。有人可以帮助我使用 CriteriaBuilder 转换查询,发现很难进行转换。