我使用的是下面One to one mapping
Account and Company
之間。公司表已經foreign key 'account_id'
。下面是代碼現在休眠一對一映射表現爲一對多
@Entity
public class Company{
................
@OneToOne
@JoinColumn(name = "account_id")
private Account account;
................
}
@Entity
public class Account{
................
@OneToOne(mappedBy="account")
private Company company;
...............
}
,上述映射裝置,對於一個Account
,只有一個company
可以與它相關,反之亦然。
現在,帳戶錶行將從其他地方插入,並且保存公司需要更新一個帳戶表列。現在,保存公司請求將包含公司詳細信息以及公司涉及的帳戶ID。在第一次請求時,公司數據以帳戶ID保存到公司數據表中,但是對於特定的account id
的後續請求,即使對於特定的account id
只應創建一個公司行,也會在公司表中插入新行。
我期待着一個例外,即只有一家公司可以與特定賬戶相關聯。我可以知道這個問題嗎?
謝謝JB。我在我的hibernate實體中添加了unique = true,如@JoinColumn(name =「account_id」,unique = true) \t private account account;但它仍然不起作用。但是,我沒有在數據庫級別添加唯一的約束。那麼,我需要在數據庫級別添加唯一的約束嗎? – Anand
是的,你必須這樣做。這就是我的答案解釋。註釋中的unique = true屬性僅在Hibernate生成數據庫模式時使用。它沒有在運行時使用。因此,如果您不使用Hibernate生成模式,則它不起任何作用。 –
謝謝..我工作...還有一件事情,當我們需要在休眠級別應用這樣的約束或者我們需要它時,考慮到這些約束已經應用在數據庫級別.. – Anand