Существует класс Offer
, который имеет факультативно отношение к классу Article
. Так что некоторые свойства статьи содержат значение null
.Hibernate/JPA: Как заставить неявные соединения использовать LEFT OUTER JOINS
Если я использую следующее заявление, все работает нормально. У меня есть все предложения, даже те, у которых нет статьи.
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'
для меня это не решило проблему! –
Я не знаю, как это должно решить проблему.AFAIK Fetchmode указывает только, как извлекать данные для инициализации объекта в памяти, а не как выполнять объединения в запросе. –