【问题标题】:Hibernate entites relationHibernate 实体关系
【发布时间】:2013-08-13 10:14:29
【问题描述】:

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

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

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

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

感谢您的宝贵时间

【问题讨论】:

    标签: hibernate


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果一个Product可以用于多个InvoiceDetails,则应使用@ManyToOne,否则使用@OneToOne。

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

      【讨论】:

        猜你喜欢
        • 2021-05-22
        • 1970-01-01
        • 2021-12-21
        • 2015-10-24
        • 2013-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多