java - Hibernate 按查询分组

标签 java database hibernate jpa hql

请帮助我理解这个查询有什么问题。

String sql = "select d.arc_alrt_cde, d.alrt_desc, count(d.arc_alrt_cde) " +
"from arc_alrt a, arc_alrt_def d " +
"where d.arc_alrt_cde = a.alrt_cde " +
"and (a.stat_cde = 'OPEN' or a.stat_cde = 'RE-OPENED') " +
"group by d.arc_alrt_cde, d.alrt_desc "+
"order by count(d.arc_alrt_cde) desc"
println sql
Query query = session.createQuery(sql);

打印 SQL

sql = select d.arc_alrt_cde, d.alrt_desc, count(d.arc_alrt_cde) from arc_alrt a, arc_alrt_def d where d.arc_alrt_cde = a.alrt_cde and (a.stat_cde = 'OPEN' or a.stat_cde = 'RE-OPENED') group by d.arc_alrt_cde, d.alrt_desc order by count(d.arc_alrt_cde) desc

出现以下错误。也试过 IN 子句..不工作..

Error:
java.lang.IllegalArgumentException: node to traverse cannot be null!
    at org.hibernate.hql.internal.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:64)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:300)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:203)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)

最佳答案

这是一个 SQL 查询而不是 HQL 查询,所以你应该使用:

SQLQuery query = session.createSQLQuery(sql);

你得到的那个异常被抛出是因为 Hibernate 期望一个 HQL 查询但是收到了一个 SQL 查询。

关于java - Hibernate 按查询分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26347613/

相关文章:

sql - 需要帮助编写查询

java - 在 Jar 中打包和使用嵌入式数据库(H2.db 文件)?

eclipse - 有没有办法在 netbeans/eclipse 中自动生成 hibernate.cfg.xml 文件?

java - 如何获取指定个体的对象属性值?

java - 如何在 Spring 中显示下载文件名中的非法字符?

java - hibernate 注释类中使用的 "catalog"是什么?

java - 从 Hibernate 5.2 升级到 5.3 时 SingletonEhCacheRegionFactory 不再可用

java - 使用正确的配置突然得到 "NoSuchBeanDefinitionException no bean named"

java - 为什么 RGBA 位图需要 3x3 数组来存储 1 个像素,如何避免这种情况?

java - 如何将 .war 文件编译到 i-jetty(android 网络服务器)?