Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate条件组属性_Hibernate_Criteria - Fatal编程技术网

Hibernate条件组属性

Hibernate条件组属性,hibernate,criteria,Hibernate,Criteria,这个问题是关于使用Hibernate标准进行分组的。 以下是我的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 =

这个问题是关于使用Hibernate标准进行分组的。 以下是我的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();

尝试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();