【问题标题】:Hibernate Criteria - Group By休眠标准 - 分组依据
【发布时间】:2013-09-20 16:06:38
【问题描述】:

我有自己的包含汽车数据的表:

  • 条目 ID
  • 汽车ID
  • 客户 ID
  • 汽车时代

我想要的是为每个客户提供最新的汽车。使用通用查询,我将按日期 DESC 对数据进行排序,然后按客户分组。

使用标准,我尝试了这个:

session.createCriteria(Car.class)
    .addOrder(Order.desc("CarAge"))
    .setProjection( Projections.groupProperty("CustomerID"));

奇怪的是,这并不返回 Car 对象,而是返回一个客户 ID 列表。

【问题讨论】:

    标签: hibernate criteria


    【解决方案1】:

    你不能指望 Car 对象。

    select * from Car group by customerId order by carAge desc;
    

    上面的 sqlquery 在数据库中也不起作用。下面是 Hibernate 执行的查询。

    select customerId from Car group by customerId order by carAge desc;
    

    如果您还需要其他列,请将其添加为组属性,您将得到它,否则获取所有 id 并再次查询数据库以获取其余值,否则编写 HQL 以具有子查询以返回特定客户 id

    【讨论】:

    • 我们是使用hql还是用条件获取id然后分别获取每个对象更好?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 2012-12-24
    • 2011-06-23
    • 2021-10-19
    • 2011-08-13
    相关资源
    最近更新 更多