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