【问题标题】:Hibernate sort table based on max year and max month and group by id using criteria基于最大年份和最大月份的休眠排序表,并使用条件按 id 分组
【发布时间】:2015-04-08 07:58:22
【问题描述】:

我很难表示我为从给定的“uid”中选择最大月份和最大年份行编写的这个查询。我有 6 个数据,其中 3 个数据的 uid 为“4”,其他 3 个数据的 uid 为“5”。我想从 uid 4 和 5 中获取最大月份和最大年份数据。这是我的条件查询,我得到了这个结果。

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

但是当我将 uid 的年份从 2012 年更改为 2013 年时,它只返回 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

我想要数据库中的第一条和第五条记录。我被困在这个阶段。请提供一些指导以通过分组获取记录。

提前致谢。

【问题讨论】:

    标签: mysql hibernate criteria hibernate-criteria detachedcriteria


    【解决方案1】:

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

    假设表名为Demo,其中三列uid,month,year

    查询:

    select a.uid,a.year,max(month) from Demo a inner join(select uid,max(year) m from Demo group by 1) d on a.uid=d.uid and a.year= dm 按 2 分组;

    它会很好地检查它并给我反馈

    【讨论】:

    • 嘿 Dheeraj 感谢您的询问。但是我只希望它使用标准。
    【解决方案2】:

    你想要这种类型的查询

    按uid从Demo组中选择Max(month),Max(Year);

    【讨论】:

    • 感谢 Dheeraj,是的,我想要相同类型的查询。上面的查询运行良好,但在同一年。当我更改年份时,它只返回一个结果。
    • 它应该返回整个对象,而不仅仅是最大月份和年份。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多