Hibernate实体关系

Hibernate实体关系,hibernate,Hibernate,我正在尝试使用Spring、Hibernate创建一个小型发票系统,因此我构建了三个域类(Product),(InvoiceMaster)和(InvoiceDetails),现在我对(InvoiceDetails)和(Product)之间的关系有点困惑,在(InvoiceDetails)中,我添加了以下产品: @ManyToOne(cascade=CascadeType.ALL) @JoinColumn(name="PRODUCT_ID", nullable=false) private Pro

我正在尝试使用Spring、Hibernate创建一个小型发票系统,因此我构建了三个域类(Product),(InvoiceMaster)和(InvoiceDetails),现在我对(InvoiceDetails)和(Product)之间的关系有点困惑,在(InvoiceDetails)中,我添加了以下产品:

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="PRODUCT_ID", nullable=false)
private Product product;
但后来我在网上发现了很多例子,这些例子都把这种关系描述为@OneToOne,所以我很困惑,这种关系应该是@OneToOne还是@ManyToOne

据我所知,一个产品有很多发票明细记录,所以应该是多对一的,请告知


感谢您的时间

OneToOne的意思是:一个产品只有一个(或零个)发票详细信息,而一个发票详细信息涉及一个(或零个)产品


我的猜测是,对于同一个产品,您可以有多个发票详细信息(因为您将向不同的客户销售一个产品的多个副本),因此关联应该是多个。

如果一个
产品可以在多个
发票详细信息中使用,您应该使用
@ManyToOne
,否则请使用
@OneToOne

根据我自己的经验,
@ManyToOne
在查询优化方面比
@OneToOne
更灵活