Java hibernate集合映射-如何将集合所有者id作为外键放入集合';s元素';什么桌子?
我有一个类Java hibernate集合映射-如何将集合所有者id作为外键放入集合';s元素';什么桌子?,java,hibernate,jakarta-ee,hibernate-mapping,Java,Hibernate,Jakarta Ee,Hibernate Mapping,我有一个类产品和一个类零件,其中每个零件只能属于一个产品。每个产品都有一个零件列表,但零件没有对其产品的引用 @Entity @Table (name= "products") class Product { @Id @GeneratedValue @Column(name = "Id") int id; @Column(name = "Name") String name; @??? List<Part> myParts; 在我的数据库中,“p
产品
和一个类零件
,其中每个零件只能属于一个产品。每个产品都有一个零件列表,但零件没有对其产品的引用
@Entity
@Table (name= "products")
class Product {
@Id
@GeneratedValue
@Column(name = "Id")
int id;
@Column(name = "Name")
String name;
@???
List<Part> myParts;
在我的数据库中,“products”表不存储有关其部件的信息,但“parts”表在“product_id”行中跟踪产品
产品:
|id |名称|
部分:
@Entity
@Table (name= "parts")
class Part {
@Id
@GeneratedValue
@Column(name = "Id")
int id;
@Column(name = "Name")
String name;
}
|id |名称|产品id|
我认为OO和ORM“世界”的这种相反的方法是很正常的,但我不知道如何用Hibernate将我的对象持久化到这种结构
对于一对多注释,我只找到零件id存储在产品表中的示例。
对于多对一来说,似乎我需要在零件对象中引用产品,不是吗
我希望我错了!;)
有没有人知道有没有一种方法可以在不改变我的类或表结构的情况下映射这一点
(如果您能用注释而不是xml来解释它,我会非常非常高兴:)我想您指的是一对多的单向映射,请尝试以下方法:
@OneToMany
@JoinColumn(name="product_id")
List<Part> myParts;
@OneToMany
@JoinColumn(name=“产品标识”)
列出我的零件;
您可以在这里看到一个示例。查看该链接中的“示例3”
注意:由于您在
零件
表中将产品_id
作为外键,因此建议在零件
类中也有一个产品
类型字段。哦,很好,它可以工作!)我的数据库中有一个错误。。。在哪种情况下,没有这样一个字段会是一个问题?我真的很想避免它,因为从OO的角度来看,它看起来相当“丑陋”,不是吗?!;)@克丽丝:这只是一个建议。我不认为会有任何问题,但对于的设计点,您在数据库中有一个从product表到parts表的外键,但这种关系实际上是隐藏的,并且不会通过ORM映射反映出来。