我有两个类:一个BaseClass和一个扩展BaseClass的ExtendedClass。我想使用Hibernate将ExtendedClass保存到单个数据库表中,我希望它还能保留BaseClass中的所有字段。
我想我想使用每个类的表范例,但是我不希望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
)
答案 0 :(得分:3)
如果将@Entity
放在基类上,则必须定义一个id,这将在数据库中生成一个表。
用@Entity
替换@MappedSuperclass
会产生所需的结果。
答案 1 :(得分:2)
尝试将基类标记为抽象
@Entity
abstract class BaseClass {
int value1;
}
答案 2 :(得分:-1)
要阻止hibernate在DB中创建表,请将其添加到persistence.xml
<property name="hibernate.hbm2ddl.auto" value="validate" />
我不知道你的基本和特定情况。子课。