Существует класс Offer
, который имеет необязательное отношение к классу Article
. Так что некоторые свойства статьи содержат значение null
.
Если я использую следующий оператор, все работает нормально. Я получил все предложения, даже те, у которых нет статьи.
SELECT o FROM Offer o
LEFT OUTER JOIN o.article a
LEFT OUTER JOIN o.vendor v
WHERE v.number = '0212' OR a.nummer = '123456'
Если я сменил оператор на:
SELECT o FROM Offer o
LEFT OUTER JOIN o.article a
LEFT OUTER JOIN o.vendor v
WHERE v.number = '0212' OR o.article.nummer = '123456'
Я получил только эти предложения, имеющие статьи, отличные от null
. Это связано с тем, что обозначение для неявных объединений (o.article.nummer
) заставляет внутреннее соединение.
Есть ли возможность принудительно включить левые внешние соединения в неявные объединения (аннотация управляется или что-то еще)? Если есть шанс, я мог бы использовать короткую форму:
SELECT o FROM Offer o
WHERE v.number = '0212' OR o.article.nummer = '123456'