我有这种情况:一个人可以有很多银行账户,但一个银行账户只能属于一个特定的人。显而易见的一对多关系:
我的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
个关系。哪一个是对的?在考虑模型中映射关系的逻辑时,我应该从图中采用刚刚反转的关系,还是看一个子对象与父表的关系?
答案 0 :(得分:0)
你在某种程度上是正确的,OnetoOne关系是ManyTOne,除了它包含一个unicity约束。
在您的情况下,您说:“一个银行帐户只能属于一个特定的人”,但如果您设置OneToOne关系,则表示在您的银行帐户表中,特定人员的外键必须只出现一次。
这就是为什么OneToMany的反向映射是允许多个FK的ManytoOne,否则它没有意义。
只是一些提示:
尽量记住oneToOne关系可能意味着你的2个表可能只是一个,因为关系中涉及的对象是高度耦合和依赖的。
希望很清楚