Вложенный запрос в Hibernate с использованием критерия

У меня есть следующий запрос, где я должен выбрать строки из временной таблицы, созданной подзапросом.

select x, y, x 
from (select x, y, z from some_table where x between x1 and x2) 
where y like 'y1' 
order by z by desc

Я должен использовать критерии для получения результата из базы данных

Я рассмотрел несколько примеров и документации для обработки подзапросов, используя критерии и отдельные критерии. Я использовал Отдельный запрос, но он не служит цели, или я что-то упустил.

Я использовал следующий код

    DetachedCriteria subCriteria =  
                      DetachedCriteria.forClass(SomeClass.class)
                     .add(Restrictions.between("x","x1","x2"))  
                     .setProjection(Projections.projectionList()
                     .add(Projections.property("x"))
                     .add(Projections.property("y"))
                     .add(Projections.property("z"));

   List<Object[]> results = session
                .createCriteria(Program.class)
                .add(Subqueries.exists(subCriteria))
                .add(Restrictions.like("y", "y1"))
                .addOrder(Order.desc("z")).list();

1 ответ

Решение

Ни HQL, ни JPQL не поддерживают "выражения производных таблиц". Вы можете использовать суб-выбор или в-выбор, но это все.

На этот раз вам нужно использовать собственный запрос, и это действительно правильно. HQL/JPQL в основном полезны, когда вы хотите получить объекты, а не проекции.

Другие вопросы по тегам