例如,一個用戶實體有一個朋友的財產,我該怎麼設計這個朋友財產,在我的思想有2種方式:如何設計一個與自身有多對多關係的表格?
- 朋友財產是由分裂的所有用戶名的字符串「」在這這種方式很難閱讀和修改。
- 朋友的財產是一個像
Set<Users>
設置,但在這種方式,我不知道如何寫在實體?
任何人都知道最佳實踐?
例如,一個用戶實體有一個朋友的財產,我該怎麼設計這個朋友財產,在我的思想有2種方式:如何設計一個與自身有多對多關係的表格?
Set<Users>
設置,但在這種方式,我不知道如何寫在實體?任何人都知道最佳實踐?
如果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
表的外鍵。
這是由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);
Aww,他們的友誼永遠不會結束! – Noah 2015-02-02 21:47:11
我試過並使用與您的相同的JPA註釋,它的工作原理。謝謝。這種自我關係的任何其他問題你認爲會導致以後? – JerryCai 2012-07-16 03:04:19
我認爲友誼必須對兩個用戶都是可見的,所以你必須設置友誼的另一端。除了循環依賴,我沒有看到任何未來的問題。 ;-) – siebz0r 2012-07-16 12:24:12