Soluzione 1
Crea una vista del database nella Table1
che espone la chiave esterna che fa riferimento a Table2
. Proietta la chiave esterna dalla query pubblicata che utilizzerai comunque per la vista. Quindi mappa la tua entità alla vista.
Soluzione 2
Usa la formula di adesione :
Ad esempio, nell'entità mappata su Table1
definire l'associazione molti-a-uno con l'entità mappata su Table2
(sembra essere il tuo caso d'uso):
@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;
Tuttavia, le formule di unione sembrano essere molto fragili in Hibernate per il momento (sono riuscito a farlo funzionare solo per l'associazione molti-a-uno e ho dovuto creare Entity2
implementare Serializable
; altrimenti non ha funzionato e ha lanciato uno strano NullPointer-
e ClassCastException
s).