0

我有一个类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”行中跟踪产品。

产品:

| 编号 | 姓名 |

部分:

| 编号 | 姓名 | 产品编号 |

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

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

我希望我错了!;)

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

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

4

1 回答 1

0

我认为您的意思是一对多的单向映射,请尝试以下操作:

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

你可以在这里看到一个例子,@OneToMany。查看该链接中的“示例 3”。


注意:由于表product_id中有 as 外键parts,因此建议Product在类中也有一个 type 字段Part

于 2012-11-11T22:35:20.843 回答