Может ли Hibernate вернуть нулевой объект при использовании createSQLQuery () для объединения таблиц? - PullRequest
4 голосов
/ 06 января 2012

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

List<Object[]> l = session.createSQLQuery("SELECT a.*, b.*, c.* " +
     " FROM (table_a a INNER JOIN table_b b ON a.some_id = b.some_id) " +
     " LEFT OUTER JOIN table_c c ON c.some_id = a.some_id"
).addEntity("a", A.class).addEntity("b", B.class).addEntity("c", C.class).list();

Запрос не выполняется, когда существуют строки в A и B, но нет соответствующей строки в C, поскольку hibernate пытается присвоить нулевые значения ненулевым атрибутам в C(Я не могу изменить эти атрибуты, чтобы они могли обнуляться).Есть ли параметр в hibernate для возврата нулевого объекта для C, если строка в C не существует, а не пытается создать объект с нулевыми значениями?

1 Ответ

0 голосов
/ 10 января 2012

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

Вы можете добавить это к предложению where следующим образом:

and ((c.name=1234 and c.price=1234) or c.id is null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...