0

我的查询是这样的:

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 转换查询,发现很难进行转换。

4

1 回答 1

0

不确定JPQL是否完全支持联合操作。您是将其作为 NamedQuery 还是在动态创建 (entityManager.createQuery()) ?

于 2012-08-06T08:37:11.200 回答