2013-12-09 3 views
5

У меня есть 2 таблицы/объекты с нет связи. я могу пойти на крест присоединяется в JPAJPA - левое соединение 2 таблицы без ассоциации

FROM A as a, B as b WHERE b.col1=a.col1 

Как я могу выполнить левый присоединиться?

Я хочу, чтобы все значения от A и заполнить их со значениями B, где можно и оставить NULL, где нет B.

Не работает:

FROM A as a LEFT JOIN B as b WHERE b.col1=a.col1 

Путь ожидается для присоединения!

Недопустимый путь: «b.col1»

ответ

-3

Это возможно с JPA с помощью следующего запроса:

FROM A as a, B as b WHERE b.col1=a.col1 OR b.col1 IS NULL 
+1

Это не то же самое, как LEFT JOIN. Предположим, что у вас есть b.col1 = 3 и нет a.col1 = 3. Ваш запрос не вернет эту строку, но LEFT JOIN вернет ее. –

4

Вы не можете сделать это в JPA, до тех пор, пока не будет никакой связи между объектами.

Решения:

  1. Используйте Native запросы.
  2. Добавить взаимосвязь между ними (в конечном счете, косвенную ленивую). С косвенным я имею в виду что-то вроде: A знает PseudoEntity, PseudoEntity знает B (но владелец отношения - объект B), B знает PseudoEntity.
Смежные вопросы