基于最大年份和最大月份的Hibernate排序表以及使用条件的ID分组

时间:2015-02-08 14:42:22

标签: mysql hibernate criteria hibernate-criteria detachedcriteria

我很难代表这个查询,我从给定的'uid'中选择最大月份和最大年份行。我有6个数据,其中3个数据有uid'4',其他3个数据有uid'5'。我想从uid 4和5获得最大月份和最大年份数据。这是我的标准查询我得到了这个结果。

  

结果清单大小:2
  uID:5 nID:cdf月份:11年:2012年   uID:4 nID:f58月:10年:2012

但是当我从2012年到2013年改变uid年份时,它只返回uid 4行。

DetachedCriteria maxYearQuery = DetachedCriteria.forClass(Demo.class);
        ProjectionList yearProj = Projections.projectionList();
        yearProj.add(Projections.max("contextYear"));
        yearProj.add(Projections.max("contextMonth"));
        yearProj.add(Projections.groupProperty("entityUUID"));
        maxYearQuery.setProjection(yearProj);

    Criteria crit = session.createCriteria(Demo.class);
            crit.add(Subqueries.propertiesIn(new String[] {"contextYear","contextMonth", "entityUUID"}, maxYearQuery));
            crit.addOrder(Order.desc("entityUUID"));

我的桌子看起来像这样..

>

uID:4 nID:cdf月:10年:2012

uID:4 nID:f58月:9年:2012

uID:5 nID:f58月:8年:2012

uID:5 nID:f58月:11年:2012

uID:5 nID:f58月:10年:2013

uID:4 nID:f58月:9年:2012

我想要数据库中的第1和第5条记录。我被困在这个阶段。请给出一些指导,以便通过分组获得记录。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您想要这种类型的查询

通过uid从演示组中选择最大(月),最大(年);

答案 1 :(得分:0)

我找到了你的问题的解决方案

表的名称是Demo,其中三列是uid,month,year

查询:

从演示中选择a.uid,a.year,max(月)一个内连接(从演示组中选择uid,max(year)m乘以1)d。在a.uid = d.uid和a.year = dm group by 2;

它会工作正常检查并给我反馈