首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate criteria groupProperty

Hibernate criteria groupProperty
EN

Stack Overflow用户
提问于 2012-12-22 00:00:30
回答 1查看 7K关注 0票数 2

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

下面是我的SQL:

代码语言:javascript
复制
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

我尝试了以下几种方法:

代码语言:javascript
复制
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();

但我得到以下错误:

代码语言:javascript
复制
Exception in thread "main" org.hibernate.QueryException: could not resolve property: price of: com.gtc.hibernate.query.Supplier
EN

回答 1

Stack Overflow用户

发布于 2012-12-22 01:10:26

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

代码语言:javascript
复制
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;

条件:

代码语言:javascript
复制
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();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13993292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档