Hibernate:将实体作为列表映射到两个或多个其他实体

时间:2013-09-15 15:34:11

标签: java hibernate mapping entity

@Entity
class Item {
  ...
}

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

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

我希望为一个具有DTYPE字段{Characters,Bank}和ID字段的Item实体创建一个表。我该怎么做这种映射?有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您应该使用@DiscriminatorColumn()
阅读它here(p.2.2.4.2)

答案 1 :(得分:0)

好吧,我找到了解决方案 - @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