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