2

例如,一个Users实体有一个friends属性,我该如何设计这个friends属性,在我看来有2种方式:

  1. Friends 属性是一个字符串,所有用户名都用“,”分隔,这样很难阅读和修改。
  2. Friends 属性是一个 Set like Set<Users>,但是这样我不知道如何在实体中写?

有谁知道最好的做法?

4

2 回答 2

2

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);
于 2012-07-13T03:26:26.930 回答
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;
}

这样,将为s 之间的User关系创建一个表和一个连接表User。该User表将有 2 列,“id”和“name”。该user_friend表将有 2 列,“user_id”和“friend_id”。中的列user_friend都是User表的外键。

于 2012-07-14T14:22:58.720 回答