Hibernate实体关系

时间:2013-08-13 10:14:30

标签: hibernate

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

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

但后来我发现很多在线示例将这种关系描述为@OneToOne所以如果关系是@OneToOne或@ManyToOne,我会感到困惑吗?!

根据我的理解,这是一个产品的许多发票详细记录,所以它应该是多对一,请咨询

感谢您的时间

2 个答案:

答案 0 :(得分:1)

OneToOne表示:产品只有一个(或零)发票明细,而发票明细涉及一个(或零)产品。

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

答案 1 :(得分:1)

如果一个Product可以在多个InvoiceDetails中使用,则应使用@ManyToOne,否则请使用@OneToOne

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