我有一个班级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解释它,我会非常非常高兴:))
答案 0 :(得分:0)
我认为你的意思是一对多的单向映射,尝试如下:
@OneToMany
@JoinColumn(name="product_id")
List<Part> myParts;
您可以在此处查看示例@OneToMany
。查看该链接中的“示例3”。
注意:由于product_id
表中有parts
外键,因此建议在Product
类中使用Part
类型字段。< / p>