Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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
Java Hibernate投影作为对象返回结果_Java_Sql_Hibernate_Postgresql - Fatal编程技术网

Java Hibernate投影作为对象返回结果

Java Hibernate投影作为对象返回结果,java,sql,hibernate,postgresql,Java,Sql,Hibernate,Postgresql,我想在hibernate中使用投影编写以下sql SELECT id, name, MAX(ver) FROM bizterm WHERE name ILIKE '%AB%' GROUP BY name, id order by name asc 我已经编写了以下代码 Session session=sessionFactory.getCurrentSession(); Criteria criteria=session.createCriteria(BizT

我想在hibernate中使用投影编写以下sql

SELECT id, name, MAX(ver)
  FROM bizterm
 WHERE name ILIKE '%AB%'
 GROUP BY name, id  order by name asc
我已经编写了以下代码

Session session=sessionFactory.getCurrentSession();
            Criteria criteria=session.createCriteria(BizTerm.class);
            criteria.add(Restrictions.ilike("name", searchString,MatchMode.ANYWHERE));
            criteria.addOrder(Order.asc("name"));
            ProjectionList projList=Projections.projectionList();
            projList.add(Projections.max("ver"));
            projList.add(Projections.groupProperty("id"));
            projList.add(Projections.groupProperty("name"));
            criteria.setProjection(projList);
在表id中,ver是PKEY。 此查询运行正常,但结果中我只得到3列的值,即ver、id、name,也作为对象,还有其他列,如BizTerm表中的status、level,这些值在结果集中不会返回。我如何使用投影得到这些?我尝试了
projList.add(Projections.property(“status”)但它不工作。
我希望执行此查询

SELECT id, name,status,level MAX(ver)
  FROM bizterm
 WHERE name ILIKE '%AB%'
 GROUP BY name, id  order by name asc using projection in hibernate

你是这样做的……现在它的工作没有错误

Criteria criteria=session.createCriteria(BizTerm.class);
            criteria.add(Restrictions.ilike("bizTermName", searchString,MatchMode.ANYWHERE));
            criteria.addOrder(Order.asc("bizTermName"));
            ProjectionList projList=Projections.projectionList();
            projList.add(Projections.max("bizTermversion"));
            projList.add(Projections.groupProperty("bizTermId"));
            projList.add(Projections.groupProperty("bizTermName"));
            projList.add(Projections.max("status"));
            projList.add(Projections.max("levels"));
            projList.add(Projections.max("createDate"));
            projList.add(Projections.max("modifyDate"));
注意:我不需要状态、级别、createDate、modifyDate的最大值,但如果我没有在max函数中写入它们,则会出现以下错误

[Error Code: 0, SQL State: 42803]  : column "levels" must appear in the GROUP BY clause or be used in an aggregate function
使用max功能,一切似乎都很好