2017-08-09 88 views
0

我有兩個實體:憑據和帳戶。憑據實體應具有唯一的電子郵件,唯一的暱稱和密碼以及所有字符串。帳戶必須具有一個唯一的憑證和其他非重要屬性。我想過使用電子郵件作爲PK憑證和帳戶。這是一個好方法嗎?我試圖實現,但你可以看到here我沒有解決我的問題。這樣做會是一種很好的編碼習慣嗎?我應該如何映射獨特的OneToOne Hibernate關係?

獨特的OneToOne會被認爲是一個不錯的選擇?我應該如何使用JPA符號來做到這一點?我知道這個問題可以基於意見,但我甚至沒有可供選擇的選項。我想知道我應該遵循什麼基本規則來實現這個概念。

回答

0

您可以在數據庫中爲所需字段創建唯一約束。這些字段的唯一性與獨特的映射無關。你也可以爲你的外鍵字段添加唯一的約束 - 這可以確保你在數據庫本身中有一對一的對象。檢查你的數據庫文檔以獲得關於如何創建約束的細節。

使用oneToOne這樣的:

@Entity 
public class Account { 

    @Id 
    private Long id; 

    // other fields... 
    // some of them are unique 

    @OneToOne(mappedBy = "account") 
    private Credential credential; 
    // omitted 

} 


@Entity 
public class Credential { 

    @Id 
    private Long id; 

    @OneToOne 
    private Account account; 

} 

OneToOne設計是指什麼意思:一個實體會有另外一個實體。所以對於每個帳戶 - 只有一個憑證。