休眠中的关系映射,一对一或多对一?

时间:2017-06-20 09:28:38

标签: hibernate mapping relationship

我有这种情况:一个人可以有很多银行账户,但一个银行账户只能属于一个特定的人。显而易见的一对多关系: enter image description here

我的BankAccount类模型如下所示:

<select class="form-control" data-abc="1" onchange={{action 'someMethod' value="target"}} >
  <option value="">Select</option>
  .
  .
  .
</select>

问题是,当我查看我的图表时,我可以清楚地看到@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; 关系,因此反转它将意味着多对一。但是从 &#34;一个银行帐户只能属于一个特定的人&#34; 让我觉得可能需要OneToMany个关系。哪一个是对的?在考虑模型中映射关系的逻辑时,我应该从图中采用刚刚反转的关系,还是看一个子对象与父表的关系?

1 个答案:

答案 0 :(得分:0)

你在某种程度上是正确的,OnetoOne关系是ManyTOne,除了它包含一个unicity约束。

在您的情况下,您说:“一个银行帐户只能属于一个特定的人”,但如果您设置OneToOne关系,则表示在您的银行帐户表中,特定人员的外键必须只出现一次。

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

只是一些提示:

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

希望很清楚