我正在尝试使用Spring,Hibernate创建一个小型发票系统,所以我构建了三个域类(Product),(InvoiceMaster)和(InvoiceDetails),现在我对(InvoiceDetails)和(InvoiceDetails)之间的关系感到有些困惑。产品),在(InvoiceDetails)我添加了产品:
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="PRODUCT_ID", nullable=false)
private Product product;
但后来我发现很多在线示例将这种关系描述为@OneToOne所以如果关系是@OneToOne或@ManyToOne,我会感到困惑吗?!
根据我的理解,这是一个产品的许多发票详细记录,所以它应该是多对一,请咨询
感谢您的时间
答案 0 :(得分:1)
OneToOne表示:产品只有一个(或零)发票明细,而发票明细涉及一个(或零)产品。
我的猜测是,您可以为同一产品提供多个发票详细信息(因为您将向不同客户销售多个产品副本),因此该关联应为ManyToOne。
答案 1 :(得分:1)
如果一个Product
可以在多个InvoiceDetails
中使用,则应使用@ManyToOne
,否则请使用@OneToOne
。
根据我自己的经验,@ManyToOne
在查询优化方面比@OneToOne
更灵活。