我需要HQL query在Java中执行with sum when else end 子句,该子句在以下环境中运行没有问题postgres:SELECT r.reviewer_id, sum(case when c.service_type = 'مالتی مدیا' AND c.genre_id = '66c92962-324c-11e7-93ae-92361f002671' then 1 else 0 end) image_multimedia, sum(case when c.service_type is null AND c.genre_id = '66c92b1a-324c-11e7-93ae-92361f002671' then 1 else 0 end) image_null FROM module_samim.content c Join module_samim.content_reviewer r on c.id = r.content_id Join module_samim.file f on f.id = c.file_id Group by r.reviewer_id我试图运行它,createQuery()但我得到:Sep 11, 2018 8:57:20 AM org.hibernate.hql.internal.ast.ErrorCounter reportErrorERROR: line 1:58: expecting "then", found 'مدیاAND'line 1:58: expecting "then", found 'مدیاAND'andSep 11, 2018 8:57:20 AM org.hibernate.hql.internal.ast.ErrorCounter reportErrorERROR: line 1:264: unexpected token: image_nullSep 11, 2018 8:57:20 AM org.hibernate.hql.internal.ast.ErrorCounter reportErrorERROR: line 1:264: unexpected token: image_nullline 1:264: unexpected token: image_null请帮我!谢谢你!
3 回答

拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
您似乎在 HQL/JPQL createQuery API 上混合使用本机查询
为了给你澄清一下,我们可以通过三种不同的方式在 Hibernate 中创建 SQL 查询:
1) session.createQuery() //Hibernate APi
2) entityManager.createQuery() //JPA Api
3) session.createSQLQuery() // **** Hibernate API ****
4) entityManager.createNativeQuery() //JPA API
因此,如果您使用 Hibernate,您应该使用 session.createSQLQuery(),如果您使用 JPA,您应该使用 entityManager.createNativeQuery()
添加回答
举报
0/150
提交
取消