Hibernate createCriteria ПРИСОЕДИНЯЙТЕСЬ, ЗАКАЗАТЬ, ОТЛИЧИТЬ от одного уровня
У меня есть 3 класса: первый, второй, третий. У меня есть примерно такие креатории:
First.createCriteria().listDistinct {
if(....){fetchMode("second", FetchMode.JOIN)
fetchMode("second.third", FetchMode.JOIN)}
order(sortOrder, orderBy)
order("id", "desc")
}
(когда "если" false, createCriteria работает нормально)
когда "если" правда Hibernate генерирует SQL-запрос, как это
select
distinct id,
secondfield
from
FIRST as firsts
inner join
SECOND
... on ...
inner join
THIRD
... on ...
where(...)
order by
firsts.name asc
firsts.id desc
Но поэтому SQL-запрос не может быть выполнен, потому что (Different, Join, Order by) не может быть на одном уровне вместе. Я обедаю в SQL-разработчике. Этот запрос без одного из (отдельный, объединить, упорядочить) работает нормально. Что я могу сделать с этим. Могу ли я заставить Hibernate сделать (присоединиться, отличаться) и (порядок) в "разные уровни SELECT"? Как я могу обернуть SELECT другим SELECT?
select *
from
(select
distinct id,
secondfield
from
FIRST as firsts
inner join
SECOND
... on ...
where(......))
order by
(......)
1 ответ
Вы можете попробовать Groovy.SQL.*, Который обеспечивает большую гибкость, чем запросы HQL.
Попробуйте это: http://groovy.codehaus.org/Tutorial+6+-+Groovy+SQL