Es gibt eine Klasse Offer
Das hat optional Beziehung zur Klasse Article
. So dass einige Angebote Artikel Eigenschaft hält eine null
Wert.
Wenn ich die folgende Anweisung verwende, funktioniert alles einwandfrei. Ich bekomme alle Angebote, auch die, die keinen Artikel haben.
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'
Wenn ich die Aussage ändere in:
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'
Ich habe nur diese Angebote mit anderen Artikeln als NULL
. Das liegt daran, dass die Notation für implizite Joins ( o.article.nummer
) erzwingt eine innere Verknüpfung.
Gibt es eine Möglichkeit, Left Outer Joins zu impliziten Joins zu erzwingen (annotationsgesteuert oder etwas anderes)? Wenn es eine Möglichkeit gibt, könnte ich eine Kurzform wie diese verwenden:
SELECT o FROM Offer o
WHERE v.number = '0212' OR o.article.nummer = '123456'