2

BaseClass と、BaseClass を拡張する ExtendedClass の 2 つのクラスがあります。Hibernate を使用して ExtendedClass を単一の DB テーブルに永続化したいのですが、BaseClass のすべてのフィールドも永続化したいと考えています。

table-per-class パラダイムを使用したいと思いますが、Hibernate に BaseClass の DB テーブルを作成させたくありません (また @Id を BaseClass に追加したくもありません)。これを抑える方法はありますか?

私はこのようなことをしています:

@Entity
class BaseClass {
  int value1;
}

@Entity
@Table(name="extendedClasses")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
class ExtendedClass extends BaseClass {
  @Id long id;
  int value2;
}

そして、DBに次のような単一のテーブルを持たせたい:

table extendedClasses
(
 long id
 int value1
 int value2
)
4

3 に答える 3

3

基本クラスを配置する場合@Entityは、id を定義する必要があります。これにより、データベースにテーブルが生成されます。

で置き換える@Entity@MappedSuperclass、望ましい結果が得られます。

于 2013-10-25T17:16:26.610 に答える
2

基本クラスを抽象としてマークしてみてください

@Entity
abstract class BaseClass {
  int value1;
}
于 2013-10-25T17:07:15.130 に答える
-1

Hibernate が DB にテーブルを作成するのを止めるには、これを persistence.xml に追加します。

<property name="hibernate.hbm2ddl.auto" value="validate" />

基本クラスとサブクラスの特定のケースについてはわかりません。

于 2013-10-25T17:10:48.840 に答える