例如,A Users实体有一个friends属性,我该如何设计这个friends属性,在我看来有两种方法:
Set<Users>
这样的集合,但是这样我不知道怎么写实体?任何人都知道最佳做法吗?
答案 0 :(得分:2)
Hay涵盖了Enterprise Model Patterns。
一方代表一个人(或一个组织):
Party
id
name
一方可以在一段时间内与另一方建立关系:
PartyRelationship
fromPartyId
toPartyId
fromDate
toDate nullable
基本图表:
Party -< PartyRelationship >- Party
示例SQL:
insert into party values (1, 'Jerry');
insert into party values (2, 'Neil');
insert into partyRelationship values (1, 2, getDate(), null);
答案 1 :(得分:1)
如果User
可以有多个朋友,您可以这样注释您的User
实体:
@Entity
public class User
{
@Id
private Long id;
private String name;
@ManyToMany
@JoinTable(
name = "user_friends",
joinColumns =
{ @JoinColumn(
name = "user_id") },
inverseJoinColumns =
{ @JoinColumn(
name = "friend_id") })
private Set<User> friends;
}
这样就可以为User
创建一个表,并为User
s之间的关系创建一个连接表。 User
表格有2列,'id'和'name'。 user_friend
表将包含2列,'user_id'和'friend_id'。 user_friend
中的列都是User
表的外键。