我不知道这是否可以做到。我看过很多论坛和帖子,我认为不可能,但我也没有看到我的具体用例。
我需要能够将表映射到自身,从而在两条记录之间创建链接。
这不是父子关系。在这种情况下,它们是相等的,所以我需要能够从两个方向访问关系。
如果 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`));
我通过休眠映射文件映射这些。所以我的问题是如何将朋友加入用户而不关心 user_id 在哪一列(friend_id_1 或friend_id_2)?