2013-12-09 16 views
5

Tôi có 2 bảng/đối tượng có không có liên kết. tôi có thể đi cho chéo tham gia trong JPAJPA - trái tham gia 2 bảng không có liên kết

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

Làm thế nào tôi có thể thực hiện một trái tham gia?

Tôi muốn tất cả các giá trị từ A và điền chúng với giá trị B nếu có thể và để lại NULL nơi không có B.

Không làm việc:

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

Đường dẫn dự kiến ​​sẽ tham gia!

con đường không hợp lệ: 'b.col1'

Trả lời

-3

này có thể với JPA với truy vấn sau đây:

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

Đó không phải là giống như một LEFT JOIN. Giả sử bạn có b.col1 = 3 và không có a.col1 = 3. Truy vấn của bạn sẽ không trả lại hàng này, nhưng LEFT JOIN sẽ trả về nó. –

4

Bạn không thể làm điều đó trong JPA, miễn là không có mối quan hệ giữa các thực thể.

Giải pháp:

  1. Sử dụng truy vấn Native.
  2. Thêm mối quan hệ giữa chúng (cuối cùng là một người lười biếng gián tiếp). Với gián tiếp tôi có nghĩa là một cái gì đó như: A biết PseudoEntity, PseudoEntity biết B (nhưng chủ sở hữu mối quan hệ là thực thể B), B biết PseudoEntity.
Các vấn đề liên quan