【发布时间】:2011-01-13 03:52:07
【问题描述】:
我有一个关于对象关系映射的奇怪谜题,使用 Java 和 Hibernate。
我们有一个看起来像这样的现有架构:
create table foo (id int8, /* ... */ primary key (id));
create table bar (id int8, foo int8, /* ... */ primary key (id));
alter table bar add constraint fk_foobar foreign key (foo) references foo;
通常,您会使用ManyToOne 关系映射它。
class Foo { /* ... */ }
class Bar { private Foo foo; /* ... */ }
但我团队中的一个人想要将其映射为继承关系:
class Foo { /* ... */ }
class Bar extends Foo { /* ... */ }
有什么方法可以用 Hibernate 解决这个问题?
编辑:重点是表bar有一个外键列foo,这与bar的标识列不同。
【问题讨论】:
-
我在 C# 中使用 NHibernate(Hibernate 的端口),答案是肯定的。 NHibernate 文档中有一些示例,我确定 Hibernate 也存在同样的示例
-
您的问题解决了吗?请提供反馈。
-
我很确定答案是否定的。我敢打赌 Hibernate 是硬连线的,所以如果你有继承关系,派生类表中的主键必须是基类表的外键。
标签: java hibernate orm jpa mapping