标准按

时间:2015-09-15 19:20:11

标签: java sql hibernate group-by projection

我在将此SQL转换为Hibernate Criteria时遇到了一些麻烦。我已经把它封存了一段时间,但无法得到任何想法,如何做到这一点。

SELECT *  FROM tableA a
INNER JOIN (
  SELECT tableA_nr AS cod, max(tableA_status) as sit
  FROM tableA 
  GROUP BY (tableA_nr)
 ) status_nr_list
ON a.tableA_nr = status_nr_list.cod and a.tableA_status = status_nr_list.sit
ORDER BY tableA_nr;

这是我迄今为止所取得的成就。

criteria.setProjection(
         Projections.projectionList()
           .add(Projections.groupProperty("tableA_nr"))
           .add(Projections.max("tableA_status.id")));

提前致谢!

1 个答案:

答案 0 :(得分:0)

不确定这是否有效,但提示是您可以使用Detached Criteria进行子查询。

子查询

DetachedCriteria status_nr_list = DetachedCriteria.forClass(tableA_nr.class, "tableA_nr");
status_nr_list.setProjection(Projections.max("tableA_status"));
status_nr_list.setProjection(Projections.property("tableA_nr"));

主要查询

session.createCriteria(tableA_nr.class)
.add( Subqueries.propertyIn("tableA_nr", status_nr_list) )
.add( Subqueries.propertyIn("tableA_status", status_nr_list) );