2015-07-03 68 views
1

我想實現一組用戶和每個用戶的聯繫人列表的數據庫。 爲此,我想創建數據庫表,想創建 Hibernate Pojo。聯繫人列表的Hibernate Pojo設計

第一我想:

class User{ 

    BigDecimal Id; 
    //Contact List 
    Set<User> contacts 
} 

但上述將創建數據冗餘;

因此,我認爲,要創建用戶的主表 並有另一個類聯繫

class User{ 
String userName; 
BigDecimal userId; 
@OneToOne; 
Contact contact; 
} 

class Contact{ 
@OneToOne 
User user; 
@?; 
Set<User> users; 
} 

,但我無法弄清楚如何聯繫的用戶組應映射用戶類別。

請問任何人建議什麼應該是設計方法。

回答

1

用戶&聯繫人表將以一對多的關係。 一個用戶可以有很多聯繫人。

class User{ 
String userName; 
BigDecimal userId; 
@OneToMany(mappedBy = "user") 
Set<Contact> contacts; 
} 

class Contact{ 
@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "USER_ID")  
User user; 
} 

USER_ID將在用戶表&在聯繫表的外鍵主鍵。

看看這個link爲例

+0

如果我們走這條路,在用戶表中,將有兩列user_id說明,user_name和聯繫表將有一個USER_ID(FK),它不會顯示任何用戶用戶關聯,所以我們需要兩個聯繫人表中的列,我不知道,另一個聯繫人類的用戶將如何與用戶類關聯。 – Nishat

+0

用戶 - 用戶關聯是什麼意思?閱讀鏈接中的示例,您將瞭解如何完成一對多映射。我覺得你很迷惑自己。 – underdog

+0

我知道一對多映射是如何完成的,但在這種情況下,一對多映射是用同一個類,讓我舉個例子,在User表中我們有{user_id,user_name}:{1,'a_name':2 ,'b_name':3,'c_name'}數據並假設我想要user_id 2,3在user_id 1的聯繫人列表中,在上面的設計中,聯繫人表將只有used_id:{2,3}條目,這不會說user_id 2,3在user_id 1的聯繫人列表中。 – Nishat

相關問題