Hibernate 标准组属性

标签 hibernate criteria

这个问题是关于使用 Hibernate Criteria 进行group by
这是我的 SQL:

SELECT s.name, max(p.price), min(p.price)
FROM supplier s, product p
WHERE s.supplier_id = p.supplier_id
GROUP BY s.name

我尝试了以下方法:

Criteria criteria = session.createCriteria(Supplier.class); 

Criteria prodCrit = criteria.createCriteria("products"); 

ProjectionList projList = Projections.projectionList(); 
projList.add(Projections.max("price"));
projList.add(Projections.min("price")); 
projList.add(Projections.groupProperty("name"));
prodCrit.setProjection(projList);
List list = criteria.list();

但我收到以下错误:

Exception in thread "main" org.hibernate.QueryException: could not resolve property: price of: com.gtc.hibernate.query.Supplier

最佳答案

尝试使用 createAlias 而不是 createCriteria。它将产生一个 SQL 查询。

select 
       max(p1_.price) as y0_, 
       min(p1_.price) as y1_, 
       this_.name as y2_ 
from Supplier this_ 
   inner join Product p1_ on this_.id=p1_.supplier_id 
 group by this_.name;

标准:

Criteria criteria = session.createCriteria(Supplier.class); 
criteria.createAlias("products","p");

ProjectionList projList = Projections.projectionList(); 
projList.add(Projections.max("p.price"));
projList.add(Projections.min("p.price")); 
projList.add(Projections.groupProperty("name"));
criteria.setProjection(projList);
List list = criteria.list();

关于Hibernate 标准组属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13993292/

相关文章:

java - 合并后 hibernate 延迟加载错误

hibernate - Hibernate 零停机时间

java - 无法转换为 java.io.Serializable

java - Hibernate 条件 JOIN + 附加条件(带子句)不适用于多对多关联

regex - 如何为相似字符编写 JPQL 查询

java - 使用 Spring 和 JPA,获取 java.lang.IllegalArgumentException : Unknown entity

mysql - 插入日期字段mysql、struts2 spring hibernate

休眠+标准。如何在没有一个引用实体的情况下返回结果

grails - GORM条件,例如查询字符串集

java - Hibernate 标准 - 排序依据