hibernate集合映射 - 如何将集合所有者id作为外键放入集合的元素表中?

时间:2012-11-11 22:08:31

标签: java hibernate java-ee hibernate-mapping

我有一个班级Product和一个班级Part,其中每个部分只能属于一个产品。每个产品都有一个部件清单,但有一部分没有提及其产品。

@Entity
@Table (name= "products")
class Product {
  @Id
  @GeneratedValue
  @Column(name = "Id")
  int id;

  @Column(name = "Name")
  String name;

  @???
  List<Part> myParts;

部分:

@Entity
@Table (name= "parts")
class Part {
  @Id
  @GeneratedValue
  @Column(name = "Id")
  int id;

  @Column(name = "Name")
  String name;
}

在我的数据库中,表'products'不存储有关其部件的信息,但'parts'表会跟踪'product_id'行中的产品。

产品:

| id |名字|

部分:

| id |名字| procuct_id |

我认为使用OO-和ORM“世界”的这种相反的方法是很正常的,但是我不知道如何用Hibernate将我的对象持久化到这个结构中!

对于一对多注释,我只找到了part-id存储在product表中的示例。 对于多对一,似乎我需要在我的零件对象中引用该产品,不是吗?

我希望我错了! ;)

有没有人知道是否有办法在不修改我的类或表结构的情况下映射它?

(如果你能用注释而不是用xml解释它,我会非常非常高兴:))

1 个答案:

答案 0 :(得分:0)

我认为你的意思是一对多的单向映射,尝试如下:

@OneToMany
@JoinColumn(name="product_id")
List<Part> myParts;

您可以在此处查看示例@OneToMany。查看该链接中的“示例3”。


注意:由于product_id表中有parts外键,因此建议在Product类中使用Part类型字段。< / p>