2

我有两个类:一个 BaseClass 和一个扩展 BaseClass 的 ExtendedClass。我想使用 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;
}

我希望数据库有一个像这样的表:

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

要停止休眠在 DB 中创建表,请将其添加到 persistence.xml

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

我不知道您对基类和子类的具体情况。

于 2013-10-25T17:10:48.840 回答