【问题标题】:HQL : select sum group by joinHQL:通过加入选择总和组
【发布时间】:2018-04-24 10:07:11
【问题描述】:

在 HQL 中,我会进行这样的查询:
我想按类别选择类别名称和总和 montantdebit

category{ idcategory ;namecategory}  

 operation {montantdebit , Category}

我尝试了以下方法:

select cat.nameCategory, sum(operation.montantdebit)  from Operation operation join  operation.category  cat group  by cat.idCategory


我遇到了错误:

Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:242) ~[spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:225) ~[spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527) ~[spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.0.5.RELEASE.jar:5.0.5.RELEASE]

【问题讨论】:

    标签: hibernate hql


    【解决方案1】:
    • 您能否提供更多详细信息,例如表的数量和列中的列? 表。
    • 或者你可以参考下面给出的查询:

      Query query = session.createQuery("from Employee");

      query = session.createQuery("select e.name, sum(e.salary), 计数(e)" + " from Employee e where e.name like '%i%' group by e.name");

    • 或者您可以参考以下来源: https://www.journaldev.com/2954/hibernate-query-language-hql-example-tutorial

    【讨论】:

      【解决方案2】:

      在您的查询中需要修复两件事:

      1. 您必须在GROUP BY 子句中包含字段名称类别
      2. 您可以排除JOIN 子句,因为Category 对象是封装在Operation 对象中的对象

      您必须按如下方式编写查询:

      SELECT operation.category.nameCategory, sum(operation.montantdebit) 
      FROM Operation operation
      GROUP BY operation.category.idCategory, operation.category.nameCategory
      

      【讨论】:

      • 谢谢,我试过了,但它不起作用..同样的错误
      • @ELHassane:我已经使用类别作为操作领域(而不是 cat)更新了我的答案。 Che 是我用过的名字(idCategory 和 nameCategory)
      猜你喜欢
      • 2013-01-08
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      相关资源
      最近更新 更多