【问题标题】:Hibernate: Mapping entity as list to two or more another entitiesHibernate:将实体作为列表映射到两个或多个其他实体
【发布时间】:2013-09-19 18:47:51
【问题描述】:
@Entity
class Item {
  ...
}

@Entity
class Character {
  ...
  @OneToMany
  public List<Item> getItems() {
    ...
  }
}

@Entity
class Bank {
  ...
  @OneToMany
  public List<Item> getItems() {
    ...
  }
}

我想为带有 DTYPE 字段 {Characters,Bank} 和 ID 的 Item 实体创建一个表。我怎样才能做这样的映射?有什么想法吗?

提前致谢。

【问题讨论】:

    标签: java hibernate mapping entity


    【解决方案1】:

    你应该使用@DiscriminatorColumn()
    阅读它here(第 2.2.4.2 页)

    【讨论】:

    • 我也认为我应该使用@DiscriminatorColumn,但我没有找到任何示例说明如何使用它在一些地方将实体映射为@OneToMany
    【解决方案2】:

    嗯,我找到了解决方案 - @WhereJoinTable

    @Entity
    class Item {
      ...
    }
    
    @Entity
    class Character {
      ...
      @OneToMany
      ..
      @WhereJoinTable(clause="DTYPE = 'Character'")
      public List<Item> getItems() {
        ...
      }
    }
    
    @Entity
    class Bank {
      ...
      @OneToMany
      ..
      @WhereJoinTable(clause="DTYPE = 'Bank'")
      public List<Item> getItems() {
        ...
      }
    }
    

    当然不要忘记@JoinTable

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-18
      • 2015-10-03
      • 2022-01-23
      • 2015-08-17
      • 1970-01-01
      • 2015-01-07
      • 2019-04-19
      • 1970-01-01
      相关资源
      最近更新 更多