Solusi 1
Buat tampilan database pada Table1
yang memperlihatkan referensi kunci asing Table2
. Proyeksikan kunci asing dari kueri Anda yang diposting yang akan tetap Anda gunakan untuk tampilan. Kemudian petakan entitas Anda ke tampilan.
Solusi 2
Gunakan rumus bergabung :
Misalnya, dalam entitas yang dipetakan ke Table1
mendefinisikan asosiasi banyak-ke-satu dengan entitas yang dipetakan ke Table2
(sepertinya kasus penggunaan Anda):
@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;
Namun, formula gabungan tampaknya sangat rapuh di Hibernate untuk saat ini (saya berhasil membuat ini berfungsi hanya untuk asosiasi banyak-ke-satu dan saya harus membuat Entity2
implementasikan Serializable
; jika tidak, itu tidak berhasil dan melemparkan beberapa NullPointer-
yang aneh dan ClassCastException
s).