Lösung 1
Erstellen Sie eine Datenbankansicht für Table1
die den Fremdschlüssel verfügbar macht, der auf Table2
verweist . Projizieren Sie den Fremdschlüssel aus Ihrer geposteten Abfrage, den Sie sowieso für die Ansicht verwenden. Ordnen Sie dann Ihre Entität der Ansicht zu.
Lösung 2
Verwenden Sie Join-Formel :
Zum Beispiel in der Entität, die Table1
zugeordnet ist Definieren Sie die Viele-zu-Eins-Verknüpfung mit der Entität, die Table2
zugeordnet ist (scheint Ihr Anwendungsfall zu sein):
@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;
Join-Formeln scheinen jedoch im Moment in Hibernate sehr anfällig zu sein (ich habe es geschafft, dass dies nur für Viele-zu-Eins-Assoziationen funktioniert, und ich musste Entity2
erstellen Serializable
implementieren; Andernfalls funktionierte es nicht und warf einige seltsame NullPointer-
und ClassCastException
s).