【问题标题】:Hibernate: mapping many-to-one association to different parent table depending on type?Hibernate:根据类型将多对一关联映射到不同的父表?
【发布时间】:2011-08-29 22:49:11
【问题描述】:

我的表格如下所示:

物品表:

ItemName   Varchar2(200)
ItemId     Number
OwnerId    Number
OwnerType  number

人员表:

PersonName Varchar2(200)
PersonId   Number

公司表:

CompanyName Varchar2(200)
CompanyId   Number

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

我没有进行数据建模,也没有更改架构的选项。

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

注意:CompanyId 和 PersonId 可以是同一个数字,所以只有当 person.personid = item.ownerid 和 item.ownertype = 1 时,一个 item 才属于 Person。

我可以控制映射文件和对象图,所以我可以创建所有者接口或超类。

Hibernate 可以做这种事情吗?

【问题讨论】:

    标签: java hibernate hibernate-mapping


    【解决方案1】:
    • Case 1:可以使用Table per class hierarchy的概念。
    • Case 2:为个人/公司类设置的映射项目与 where 集合映射的条件。

    【讨论】:

      猜你喜欢
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      相关资源
      最近更新 更多