【问题标题】:Relational mapping in hibernate, one to one or many to one?hibernate中的关系映射,一对一还是多对一?
【发布时间】:2017-06-20 09:28:38
【问题描述】:

我有这种情况:一个人可以有多个银行账户,而一个银行账户只能属于一个特定的人。明显的一对多关系:

我的 BankAccount 类模型如下所示:

@Entity
@Table(name="bank_account")
public class Bank {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="bank_id")
    private int bankId;

    @Column(name="account_number")
    private String accNumber;

    @ManyToOne // or @OneToOne?
    private Person person;

问题是当我查看我的图表时,我可以清楚地看到OneToMany 关系,所以颠倒它意味着多对一。但是从“一个银行账户只能属于一个特定的人”的一面让我觉得可能需要OneToOne关系。哪一个是对的?在考虑模型中映射关系的逻辑时,我应该从图表中获取反向关系还是查看一个子对象与父表的关系?

【问题讨论】:

    标签: hibernate mapping relationship


    【解决方案1】:

    在某种程度上你是对的,OnetoOne 关系是 ManyTOne,除了它包含唯一性约束这一事实。

    在您的情况下,您说:“一个银行账户只能属于一个特定的人”,但是如果您放置 OneToOne 关系,则意味着在您的银行账户表中,特定人的外键只能出现一次。

    这就是为什么 OneToMany 的反向映射是允许多个 FK 的 ManytoOne,否则它没有意义。

    只是一些小提示:

    请记住,oneToOne 关系可能意味着您的 2 个表可能只是一个,因为关系中涉及的对象是高度耦合和依赖的。

    希望清楚

    【讨论】:

    • 谢谢!这是非常明确,内容丰富的答案。我把模型看成一个对象,我没有意识到我应该把它看成一张桌子)
    猜你喜欢
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2016-07-10
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多