hibernate hql sum case when else end execution in

我需要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 reportError

ERROR: line 1:58: expecting "then", found 'مدیاAND'

line 1:58: expecting "then", found 'مدیاAND'

and


Sep 11, 2018 8:57:20 AM org.hibernate.hql.internal.ast.ErrorCounter reportError

ERROR: line 1:264: unexpected token: image_null

Sep 11, 2018 8:57:20 AM org.hibernate.hql.internal.ast.ErrorCounter reportError

ERROR: line 1:264: unexpected token: image_null

line 1:264: unexpected token: image_null

请帮我!谢谢你!


江户川乱折腾
浏览 174回答 3
3回答

炎炎设计

语法似乎是 SQL,而不是 HQL。因此,我们需要代替这个createQuery()称之为createSqlQuery()

郎朗坤

我找到了解决方案:)) 我使用createNativeQuery()并在此链接中解释了@SqlResultSetMapping以完全解决我的问题

拉风的咖菲猫

您似乎在 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java