AFAIK, Проекции будут получать только подмножество столбцов (или это только один столбец?), Которые вы хотите.
Если ваш объект данных выглядит так:
class Person {
private String id;
private String name;
private int age;
...
}
иЕсли вы хотите найти самого старого человека в таблице, кажется, что работает следующее:
...
Person oldest =
(Person) session.createCriteria(Person.class)
.addOrder(Order.desc("age"))
.setMaxResults(1)
.uniqueResult();
...
Журнал Hibernate (с show_sql
, format_sql
и use_sql_comments
со всеми true
) показывает
select
*
from
( /* criteria query */ select
this_.ID as ID1_12_0_,
this_.NAME as NAME_12_0_,
this_.AGE as AGE_12_0_
from
PERSON this_
order by
this_.AGE desc )
where
rownum <= ?
Что кажется правильным.Обратите внимание, что это в Hibernate 3.3.2 с Oracle 11 XE.