Конвертировать SQL в HQL, где предложение - PullRequest
1 голос
/ 18 апреля 2011

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

Я пытаюсь использовать простой HQL-запрос в моем веб-приложении с использованием Hibernate.Я хочу выполнить следующий SQL-запрос:

SELECT * FROM deal WHERE deal_status='A' OR WHERE deal_status='O';

Кажется, что HQL не работает или не содержит предложения, здесь мои текущие операторы HQL в моем веб-приложении:

FROM deal d where d.deal_status='O' or d.deal_status='A' order by d.id

Спасибо за любыеСправка по запросу в спящем режиме

С уважением, Алекс

1 Ответ

3 голосов
/ 18 апреля 2011
  • HQL основан на именах полей вашей сущности, не принадлежащих вашему классу, и именах классов
  • c.id - c не определено

Я настоятельно предполагаю, что поля в Deal (имя класса в верхнем регистре) не deal_status, а статус, тогда запрос должен быть таким.(Я пропустил материал c.id, потому что понятия не имею, что вы имеете в виду под этим.)

 SELECT d FROM Deal d WHERE d.status='O' or d.status=`A`

Обратите внимание на верхнюю букву D из сделки

И этобудет работать, только если Deal.status является строкой или чем-то в этом роде, но не если это Enum.Один из способов справиться с Enum - это:

Query query = session.createQuery(
    "SELECT d FROM Deal d WHERE d.status=:o or d.status=:a");
query.setParameter("a", MyEnum.A);
query.setParameter("o", MyEnum.O);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...