我想在Primefaces p:dataTable
中为我的输出生成一些带有JPQL的数据。我使用以下查询。
Query query = this.em.createQuery("SELECT a FROM ProffesorTable a WHERE
a.fkProffesorID.name LIKE '"+buffervarQuery+"%' AND a.fkProffesorID.release='TRUE'
UNION
(SELECT a FROM ProffesorTable a WHERE a.fkProffesorID.name LIKE '%"+buffervarQuery+"'
AND a.fkProffesorID.release='TRUE') GROUP BY a.fkProffesorID.name ");
result = query.getResultList();
我收到以下例外
引起:java.lang.IllegalArgumentException:在EntityManager中创建查询时发生异常: 例外说明:编译时遇到的内部问题 [选择一个FROM ProffesorTable a WHERE a.fkProffesorID.name LIKE' sie%' AND a.fkProffesorID.release =' TRUE' UNION
(选择一个FROM ProffesorTable a WHERE a.fkProffesorID.name LIKE'%sie' AND a.fkProffesorID.name =' TRUE')GROUP BY a.fkProffesorID.name") ]。 [249,277]查询包含格式错误的结尾。 在org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1585) 在com.sun.enterprise.container.common.impl.EntityManagerWrapper.createQuery(EntityManagerWrapper.java:456)
答案 0 :(得分:0)
您的简单查询可以转换为此查询以及jpql支持的查询。
SELECT a FROM ProffesorTable a
WHERE (a.fkProffesorID.name LIKE '"+buffervarQuery+"%' or a.fkProffesorID.name LIKE '%"+buffervarQuery+"')
AND a.fkProffesorID.release='TRUE'
GROUP BY a.fkProffesorID.name