Rozwiązanie 1
Utwórz widok bazy danych w Table1
który ujawnia klucz obcy odwołujący się do Table2
. Wyświetl klucz obcy z wysłanego zapytania, którego i tak użyjesz w widoku. Następnie zmapuj swoją jednostkę do widoku.
Rozwiązanie 2
Użyj formuły dołączania :
Na przykład w encji zmapowanej do Table1
zdefiniuj skojarzenie wiele do jednego z encji mapowanej do Table2
(wydaje się, że to twój przypadek użycia):
@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;
Jednak formuły łączenia wydają się na razie bardzo delikatne w Hibernate (udało mi się to zrobić tylko dla skojarzeń wiele do jednego i musiałem utworzyć Entity2
zaimplementuj Serializable
; w przeciwnym razie nie zadziałało i wyrzuciło jakiś dziwny NullPointer-
i ClassCastException
s).