【问题标题】:Is it possible to select data with max value for a column using Criteria in Hibernate?是否可以在 Hibernate 中使用 Criteria 为列选择具有最大值的数据?
【发布时间】:2010-03-19 15:58:22
【问题描述】:

假设我有以下映射:

<hibernate-mapping package="mypackage">
    <class name="User" table="user">
  <id name="id" column="id">
   <generator class="native"></generator>
  </id>        
  <property name="name" />
  <property name="age" />
  </class>
</hibernate-mapping>

是否可以在 Hibernate 中使用 Criteria 选择最老的用户(即年龄最大)?

我可以想象我可以通过 2 次选择来做到这一点。 (首先选择用户总数,然后按年龄降序排列条目并选择第一个条目)。但是单选可以吗?

谢谢

帕洛

【问题讨论】:

    标签: hibernate orm criteria


    【解决方案1】:

    使用 Criteria API,您可以这样做:

    session.createCriteria(User.class).addOrder(Order.desc("age")).setMaxResults(1)
    

    【讨论】:

      【解决方案2】:

      有点。您需要按年龄排序,以便最老的用户是您查询的第一个结果。然后将结果集限制为一个并返回该唯一结果。

      User oldest = getSession().createQuery("SELECT u FROM User u ORDER BY u.age DESC")
          .setMaxResults(1).uniqueResult();
      

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 2013-01-02
        • 2011-04-23
        • 2011-09-12
        • 1970-01-01
        • 2021-07-23
        • 2019-01-06
        相关资源
        最近更新 更多