私には次の2つのエンティティがあります。
Invoice
- 主キーは
InvoiceId
- 関心のある他の列は
[OrgId, VendorId, VendorInvoiceId]
- 主キーは
InvoiceState
- 主キーは
InvoiceStateId
- 関心のある他の列は
[OrgId, VendorId, VendorInvoiceId]
- 主キーは
「他の対象の列」は、両方のテーブルで一意のキーを形成します。ただし、2番目のテーブルにInvoiceState
は、最初のテーブルに対応するレコードがないレコードを含めることができますInvoice
。
エンティティレイヤーで、次のように、関係が定義されInvoice
たエンティティへの参照を含むようにエンティティを定義したいと思います。InvoiceState
@OneToOne
@JoinColumns
@OneToOne
@JoinColumns
({
@JoinColumn(name="OrgId", referencedColumnName="OrgId"),
@JoinColumn(name="VendorId", referencedColumnName="VendorId"),
@JoinColumn(name="VendorInvoiceId", referencedColumnName="VendorInvoiceId")
})
ただし、これにより、外部キー数が両方のエンティティで同じではないという例外がスローされます。これら2つのテーブルの間に外部キーも定義されていません。
@OneToOne
外部キーを共有しないが、実行中に使用できる列のセットを持つ2つのエンティティ間の関係を定義する方法はありJOIN
ますか?