hibernate hql sum case when then else end execution in java 问题
hibernate hql sum case when then else end execution in java problem
我需要用 sum when then else end 子句执行 HQL query
Java 运行 在 [= 中没有问题14=]:
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
请帮帮我!
谢谢!
语法好像是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
- So if you are using Hibernate, you should user session.createSQLQuery() and if you are using JPA you should use entityManager.createNativeQuery()
我需要用 sum when then else end 子句执行 HQL query
Java 运行 在 [= 中没有问题14=]:
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
请帮帮我! 谢谢!
语法好像是SQL,不是HQL。
因此,我们需要的不是这个
createQuery()
称之为
createSqlQuery()
我找到了解决方案:))
我使用 createNativeQuery()
和
您似乎将本机查询的用法与 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
- So if you are using Hibernate, you should user session.createSQLQuery() and if you are using JPA you should use entityManager.createNativeQuery()