我不知道这是不是可以做到。我看了很多论坛和帖子,我不认为这是可能的,但我也没有看到我的具体用例。
我需要能够将一个表映射到自身,在两个记录之间创建一个链接。
这不是父子关系。在这种情况下,它们是相等的,所以我需要能够从两个方向访问关系。
如果UserA是UserB的朋友,我想调用user.getFriends()并获取每个用户的朋友列表。UserA将返回UserB,UserB将返回UserA
这就是我计划如何设置我的表。一个面向用户,另一个面向友谊
CREATE TABLE Users(
user_id numeric(19, 0) NOT NULL,
name varchar(128) NOT NULL
PRIMARY KEY (user_id));
CREATE TABLE Friendship(
friend_id_1 numeric(19, 0) NOT NULL,
friend_id_2 numeric(19, 0) NOT NULL
PRIMARY KEY (friend_id_1, friend_id_2),
CONSTRAINT `FX_FRIEND_1` FOREIGN KEY (`friend_id_1`) REFERENCES `Users` (`user_id`),
CONSTRAINT `FX_FRIEND_2` FOREIGN KEY (`friend_id_2`) REFERENCES `Users` (`user_id`));我通过hibernate映射文件来映射它们。所以我的问题是,我如何才能将朋友加入用户,而不关心user_id在哪一列(friend_id_1或friend_id_2)?
发布于 2013-09-25 22:39:48
在正常的数据库结构中,如果您只需要将一个朋友链接到表中的另一个朋友,您只需在表中创建一个新字段,该字段将保存与他为好友的人的ID,这是一种静态方式,他只能与另一个人成为朋友,显然在您的情况下,两个朋友的记录都将在这个新字段中保存另一个人的ID。如果你需要多个朋友,那么你只需创建一个新的表来保存两个朋友的ID,这个新表中的每个新记录都将是两个朋友的新链接,使用此选项,一个人可以与同一个表中的任意多个人成为朋友。
https://stackoverflow.com/questions/18876141
复制相似问题