0

Hibernateを使用して一部のデータをマップするために、サブクラスごとのテーブルアプローチを採用しています。通常、データベースレイヤーでは、抽象テーブルとそのサブテーブルに型列を導入します。これにより、抽象レコードは一致する型のサブレコードにのみ関連付けることができます。ただし、さまざまなリソースを見ると、Hibernateディスクリミネーターがレガシーデータベースに使用されていることがわかります。これは私が間違ったアプローチを取っていることを意味しますか?

4

2 に答える 2

2

(サブ)クラスごとのテーブルとは、クラスごとに1つのテーブルがあり、抽象テーブルがないことを意味します。したがって、弁別器は必要ありません。単一テーブルまたは結合継承がある場合は、識別子が必要になります。

編集:実際には、サブクラスごとのHibernateのテーブルはJoined継承戦略のようです。ただし、これはドキュメントに記載されています。

Hibernateのサブクラスごとのテーブルの実装には、識別子列は必要ありません。

于 2011-08-22T13:47:31.637 に答える
1

上記のように、サブクラスごとのHibernateテーブルには識別子は必要ありません。

同じ情報源によると、「...サブクラス戦略ごとのテーブルで識別子列を使用する場合は、サブクラスの使用と結合を組み合わせることができます...」

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/inheritance.html#inheritance-tablepersubclassのセクション9.1.3を参照してください

于 2011-08-22T15:31:50.360 に答える