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(example@sqldat.com(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).