例如,一个Users实体有一个friends属性,我该如何设计这个friends属性,在我看来有2种方式:
- Friends 属性是一个字符串,所有用户名都用“,”分隔,这样很难阅读和修改。
- Friends 属性是一个 Set like
Set<Users>
,但是这样我不知道如何在实体中写?
有谁知道最好的做法?
Hay 涵盖了企业模型模式。
一方代表一个人(或一个组织):
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);
如果一个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;
}
这样,将为s 之间的User
关系创建一个表和一个连接表User
。该User
表将有 2 列,“id”和“name”。该user_friend
表将有 2 列,“user_id”和“friend_id”。中的列user_friend
都是User
表的外键。