Что я хочу достичь: Получите список уникальных идентификаторов, заказанных другим столбцом, используя критерии гибернации.Hibernate-Criteria: выберите отдельный столбец из таблицы, заказанной другим столбцом
Мой код до сих пор:
Criteria crt = createCriteria(); //complex method returning Criteria
//with joined tables, restrictions and ordering
crt.setProjection(Projections.distinct(Projections.property("id")));
List<Integer> ids = crt.list();
Что не так: Когда я установил порядок по столбцам, скажем, "дата" Я получаю запрос:
SELECT DISTINCT id FROM table \\JOIN, WHERE...\\ ORDER BY date);
, который, очевидно, неправильно и приводит к ошибке:
ORA-01791: not a SELECTed expression
Моя идея, как решить: Каким-то образом заставить Hibernate генерировать этот запрос:
SELECT DISTINCT id FROM (SELECT * FROM table \\JOIN, WHERE...\\ ORDER BY date);
проблемы и то, что я пытался: Существует createCriteria()
метод, который я не хочу, чтобы изменить, если это не совершенно необходимо. Я не нашел способ использовать этот критерий как DetachedCriteria.
Вы можете изменить отдельные критерии к нормальному, если это помогает. –