复杂查询到等效的标准生成器查询(EntityManager)

时间:2012-08-06 08:26:20

标签: java hibernate jpa-2.0 entitymanager hibernate-entitymanager

我的查询是:

query1 =从entity1 a中选择a.id,其中a.id在(:List1)中        并且不存在(从实体2 ex2中选择ex2,其中ex2.assignedId = a.id)
工会
从entity2 ex,entity3 pi中选择ex.assignedId        其中ex.entity3Id = pi.id和ex.assignedId in(:List1)
          和ex.assignedTypeId =:assignedTypeId和pi.processStatus =:status
并不存在 (从entity2 ex1,entity3 pi1中选择ex1.assignedId             其中ex1.entity3Id = pi1.id和ex1.assignedId = ex.assignedId
                  和ex1.assignedTypeId =:assignedTypeId
                              和pi1.processStatus<> :状态);

并且在尝试执行查询时,

查询existingIds = em.createQuery(query1); //设置所有参数

在org.hibernate.hql.ast.ParameterTranslationsImpl的第87行抛出NullPointerException

完全检查了所有大括号和参数。等效转换在mysql中有效。 有人可以协助我使用CriteriaBuilder转换查询,发现很难进行转换。

1 个答案:

答案 0 :(得分:0)

根本不确定是否JPQL supports联合操作。您是将它作为NamedQuery放置还是即时创建(entityManager.createQuery())?