4

HibernateJPAを使用しています。

私がこれらのクラスを持っているとしましょう:

AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer

具体的なクラスに独立したIDを持たせる方法はありますか?

InheritanceType.TABLE_PER_CLASSを使用しています。

4

1 に答える 1

11

Hibernate Annotationsリファレンスガイドから:

2.2.4.1。クラスごとのテーブル

この戦略には、JPA仕様、Hibernateリファレンスドキュメント、Hibernate in Action、およびその他の多くの場所で説明されている多くの欠点(特に、多態的なクエリと関連付け)があります。SQL UNIONHibernateは、クエリを使用してこの戦略を実装するそれらのほとんどを回避します。これは通常、継承階層の最上位に使用されます。

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Flight implements Serializable { ... } 

この戦略は、双方向である場合、1対多の関連付けをサポートします。この戦略はジェネレーター戦略をサポートしていませんIDENTITY。IDは複数のテーブル間で共有する必要があります。したがって、この戦略を使用する場合は、またはを使用しAUTOないでIDENTITYください。

だから私はあなたが望むものがサポートされていないのではないかと心配しています(そして私は使用することをお勧めしますGenerationType.TABLE)。

于 2010-07-01T17:39:51.047 に答える