2015-07-03 76 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

相关问题