0

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

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="PRODUCT_ID", nullable=false)
private Product product;

但是后来我发现许多在线示例将关系描述为@OneToOne,所以我很困惑该关系应该是@OneToOne 还是@ManyToOne?!

据我了解,一个产品有很多发票明细记录,所以应该是多对一,请指教

谢谢你的时间

4

2 回答 2

1

OneToOne 的意思是:一个产品只有一个(或零个)发票明细,一个发票明细涉及一个(或零个)产品。

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

于 2013-08-13T10:19:56.540 回答
1

如果一个Product可以在几个中InvoiceDetails使用,你应该使用@ManyToOne,否则使用@OneToOne

仅从我自己的经验来看,在查询优化方面@ManyToOne更灵活@OneToOne

于 2013-08-13T10:20:12.160 回答