Giải pháp 1
Tạo chế độ xem cơ sở dữ liệu trên Table1
làm lộ ra khóa ngoại tham chiếu Table2
. Chiếu khóa ngoại từ truy vấn đã đăng của bạn mà bạn vẫn sẽ sử dụng cho chế độ xem. Sau đó, ánh xạ thực thể của bạn với chế độ xem.
Giải pháp 2
Sử dụng công thức tham gia :
Ví dụ:trong thực thể được ánh xạ tới Table1
xác định liên kết nhiều-một với thực thể được ánh xạ tới Table2
(có vẻ là trường hợp sử dụng của bạn):
@ManyToOne
@JoinColumnsOrFormulas({
@JoinColumnOrFormula([email protected](value="(SELECT t2.serial FROM Table2 t2 WHERE serial1 = t2.serial OR serial2 = t2.serial)", referencedColumnName="serial"))
})
private Entity2 entity2;
Tuy nhiên, các công thức nối dường như rất mỏng manh trong Hibernate vào thời điểm hiện tại (tôi đã cố gắng làm cho công thức này chỉ hoạt động cho liên kết nhiều-một và tôi phải tạo Entity2
triển khai Serializable
; nếu không nó không hoạt động và ném một số NullPointer-
lạ và ClassCastException
s).