ソリューション1
Table1にデータベースビューを作成します Table2を参照する外部キーを公開します 。とにかくビューに使用する、投稿されたクエリから外部キーを投影します。次に、エンティティをビューにマップします。
ソリューション2
数式に参加 を使用します :
たとえば、Table1にマップされたエンティティで Table2にマップされたエンティティとの多対1の関連付けを定義します (ユースケースのようです):
@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;
ただし、当面の間、Hibernateでは結合式は非常に壊れやすいようです(これは多対1の関連付けに対してのみ機能するようになり、Entity2を作成する必要がありました。 Serializableを実装する;それ以外の場合は機能せず、奇妙なNullPointer-をスローしました およびClassCastException s)。