[英]Self referencing Entity in Hibernate with additional Columns
我想用Hibernate映射這些表:
CREATE TABLE user
(
id VARCHAR(20),
//some stuff
PRIMARY KEY(id)
);
CREATE TABLE friendship
(
user1 VARCHAR(20),
user2 VARCHAR(20),
firstMeeting TIMESTAMP,
//mb some additional stuff
PRIMARY KEY(user1, user2),
FOREIGN KEY(user1) REFERENCES user(id),
FOREIGN KEY(user2) REFERENCES user(id)
);
我想知道正確的映射方式。 我想到了:
用戶實體
@ManyToMany Set<Friendship> friendships;
與友情
@Size(min=2, max=2)
@ManyToMany Set<User> members;
Date firstMeeting;
但是我不認為這與上面的模式相匹配(不僅在列名中而且在tbl計數中,該模式需要2個,但需要映射到3個表,2個實體和ManyToMany關系映射表中的1個)。 問題是我不能將其映射為2次
@ManyToOne User user1/2;
因為那樣我將無法重定向用戶的友誼,因為我無法添加類似
@OneToMany Set<Friendship> friendships;
給用戶,因為我將無法指定mappedBy =? 參數,因此該關系將被映射到另一個表中。
但是我想保持雙向。
有什么好辦法解決這個問題嗎?
此外,友誼表中用戶的排序方式無關緊要,因此(user1,user2)=(user2,user1)。 我認為最好用等價的equals()-Implementation表示在idClass / EmbeddedId中,對嗎?
編輯:如果您在2個元素上定義了一些順序,例如from <->至,owner <->擁有,似乎可以對此進行歸檔,但是我看不到這種關系中的任何自然順序,並且我不願意為這個技術問題定義一些人造的東西...
用戶實體
@ManyToMany Set<Friendship> friendships;
然后是友誼表:
User member;
User memberFriend;
Date firstMeeting;
或者,如果您想使用PRIMARY KEY(user1,user2)作為友誼實體,則必須將實體拆分為2個表,例如:
FriendFK fKey;
Date firstMeeting;
和表FriendFK:
User member;
User memberFriend;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.