Hibernate:根据类型将多对一关联映射到不同的父表?

时间:2011-08-29 22:49:11

标签: java hibernate hibernate-mapping

我的表格看起来像这样:

项目表:

ItemName   Varchar2(200)
ItemId     Number
OwnerId    Number
OwnerType  number

人员表:

PersonName Varchar2(200)
PersonId   Number

公司表:

CompanyName Varchar2(200)
CompanyId   Number

当Item的ownerType为'1'时,该项的ownerId是'person'表的外键PersonId。当OwnerType为'2'时,ownerId是Company表的CompanyId的外键。

我没有做数据建模和我无法更改架构。

我想解决两个问题: (1)我想要一个Item表的映射文件,它会给我项目的所有者。 (2)我想为Person& amp;公司表格分别给我个人或公司拥有的物品。

注意:CompanyId和PersonId可以是相同的数字,因此当person.personid = item.ownerid和item.ownertype = 1时,项目仅由Person拥有。

我可以控制映射文件&对象图,所以我可以创建一个Owner接口或超类。

Hibernate能做这种事吗?

1 个答案:

答案 0 :(得分:0)

  • Case 1:您可以使用Table per class hierarchy
  • 的概念
  • Case 2:将人物/公司类设置的地图项目放在哪里 设置映射的条件。