Hibernate createQuery remove () в состоянии WHERE - PullRequest
0 голосов
/ 31 мая 2011

скажем, у меня есть сущность Person.

Когда я пытаюсь использовать с hibernate createQuery, он удаляет () в условии where.Пример:

Query query = session.createQuery("FROM Person WHERE name=? OR (id=? AND active=?)");
query.setParameter(1, "Test");
query.setParameter(2, 1);
query.setParameter(3, 1);
// and so on

Когда я открываю вывод debug sql в hibernate, он выдает

where person0_.`name`=? or person0_.`id`=? and person0_.`active`=?

Поскольку я помещаю () в условие where, вывод должен быть

where person0_.`name`=? or (person0_.`id`=? and person0_.`active`=?)

почему () в котором условие удалено?или я что-то пропустил?

Спасибо

1 Ответ

2 голосов
/ 31 мая 2011

AND имеет более высокий приоритет, чем OR в SQL, поэтому оба оператора эквивалентны. Hibernate удаляет ненужные скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...