联系人列表的Hibernate Pojo设计
问题描述:
我想实现一组用户和每个用户的联系人列表的数据库。 为此,我想创建数据库表,想创建 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;
}
,但我无法弄清楚如何联系的用户组应映射用户类别。
请问任何人建议什么应该是设计方法。
答
用户&联系人表将以一对多的关系。 一个用户可以有很多联系人。
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为例
如果我们走这条路,在用户表中,将有两列user_id说明,user_name和联系表将有一个USER_ID(FK),它不会显示任何用户用户关联,所以我们需要两个联系人表中的列,我不知道,另一个联系人类的用户将如何与用户类关联。 – Nishat
用户 - 用户关联是什么意思?阅读链接中的示例,您将了解如何完成一对多映射。我觉得你很迷惑自己。 – underdog
我知道一对多映射是如何完成的,但在这种情况下,一对多映射是用同一个类,让我举个例子,在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