Можно ли выбрать данные с максимальным значением для столбца, используя критерии в Hibernate? - PullRequest
3 голосов
/ 19 марта 2010

Допустим, у меня есть следующее сопоставление:

<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?

Я могу представить, чтоЯ мог бы сделать это с 2 выборами.(сначала выберите общее количество пользователей, а затем упорядочите записи по возрасту и выберите первую запись).Но возможно ли это с помощью одного выбора?

Спасибо

Пало

Ответы [ 2 ]

5 голосов
/ 19 марта 2010

С помощью Criteria API вы можете сделать это следующим образом:

session.createCriteria(User.class).addOrder(Order.desc("age")).setMaxResults(1)
1 голос
/ 19 марта 2010

Вид. Вам нужно упорядочить по возрасту, чтобы самый старый пользователь был первым результатом вашего запроса. Затем вы ограничиваете набор результатов одним и возвращаете этот уникальный результат.

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