Hibernate保存为超类

时间:2015-07-10 09:49:03

标签: hibernate inheritance

我有一个@Entity“Foo”,它对应于我的数据库“FooTable”中的一个表。 我创建了一个Foo的子类,名为“Bar”,带有其他属性。 栏与我的数据库中的表不对应。 当我保存Bar(或Foo的任何子类)时,我希望它被简单地视为“Foo”的一个实例。即保存在FooTable中。

我尝试在Foo上使用以下注释:

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)

..同时将Bar中的其他属性标记为@Transient。

然而,hibernate现在似乎期待@DiscriminatorColumn。没有它,它会产生以下声明:

insert into FooTable (dtype, id) values ('Bar', ?)

导致:

ORA-00904: "DTYPE": invalid identifier

有没有让hibernate继续保持Foo的子类,因为它们会Foo?

1 个答案:

答案 0 :(得分:0)

我的坏。在发布问题后,我意识到简单的答案是在Hibernate Session上使用entityName参数:

对我来说不幸的是,这不是一个选项,因为我通过Spring repository访问我的数据模型。

编辑我的初始问题以包含此附加条件会破坏它。所以我将把它作为答案,并从Spring的角度重新审视这个问题。

相关问题