Есть ли простой способ конвертировать критерии в HQL? - PullRequest
14 голосов
/ 13 февраля 2009

Несколько дней назад я опубликовал вопрос о запросах к коллекциям с помощью API Criteria, и после всех ответов я вижу, что то, что я пробую, невозможно с помощью Criteria. для ситуации в nhibernate, а также в hibernate

Я использовал DetachedCriteria, чтобы собрать все критерии вместе, и этот список очень длинный. Последний круг цепочек - это ошибочные критерии, поэтому мне нужно изменить все мои отдельные критерии на HQL.

Так что мой вопрос: есть ли какой-либо инструмент или способ конвертировать Критерии в HQL.

или

Есть ли способ заставить Критерию и Hql работать вместе?

Статья об ошибке в nhibernate

Ответы [ 4 ]

3 голосов
/ 17 февраля 2009

репост с форумов hibernate ... не уверен, имеет ли он отношение к nhibernate или обновлен


от: макс. Hibernate Team

Опубликовано: вс 24 декабря 2006 г. 7:12

это очень упрямый фольклор, критерии которого переводятся на HQL. Критерии идут непосредственно к SQL, но нет прямых общедоступных API, чтобы получить его программно.

...

перевод дважды не очень эффективен;)

http://forum.hibernate.org/viewtopic.php?t=968990&view=next&sid=50454aa6cec8d482198117fbd398ca70

3 голосов
/ 17 февраля 2009

Я отправил электронное письмо Айенде Рахиен о проблеме и благодарю его за ответ. Он сказал, что

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

0 голосов
/ 11 июля 2010

Я изменил Hibernate Criteria API для генерации JPQL-запросов, пытаясь сохранить интерфейс в основном похожим. Название моего проекта Criteria2JPQL по адресу:

https://sourceforge.net/projects/criteria2jpql/

Поскольку этот перевод является простой операцией в памяти, которая генерирует стандартный запрос JPQL, значительных проблем с производительностью нет. С другой стороны, идея этого проекта возникла из-за неэффективных собственных SQL-запросов Hibernate Critera, включая множество ненужных объединений. Мы испытали использование Criteria2JPQL в нашем проекте в моей компании и заметили, что эти ненужные объединения исчезли.

0 голосов
/ 13 февраля 2009

Какую версию nHibernate вы используете? Я думаю, что использование последней версии может решить вашу проблему, так как 2.0 GA имеет много серьезных изменений.

...