Hay una clase Offer
que tiene relación opcional con la clase Article
. De modo que algunas ofertas de propiedades de artículos tienen un valor de null
.Hibernate/JPA: cómo forzar las uniones implícitas para usar UNIONES EXTERNAS IZQUIERDAS
Si uso la siguiente declaración, todo funciona bien. Recibí todas las ofertas, incluso aquellas que no tienen ningún artículo.
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'
si cambio de la declaración:
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'
llegué sólo estas ofertas que tienen diferentes artículos de NULL
. Esto se debe a que la notación para combinaciones implícitas (o.article.nummer
) fuerza una unión interna.
¿Existe la posibilidad de forzar uniones externas izquierdas a uniones implícitas (anotadas o algo por el estilo)? Si hay una posibilidad de que podría utilizar una forma abreviada de esta manera:
SELECT o FROM Offer o
WHERE v.number = '0212' OR o.article.nummer = '123456'
¡esto no resolvió el problema! –
No sé cómo esto debería resolver el problema.AFAIK Fetchmode solo especifica cómo recuperar los datos para inicializar el objeto en la memoria, no cómo hacer combinaciones en una consulta. –