Many to many 同一实体中的多个

Many to many 同一实体中的多个,many-to-many,playframework-2.0,ebean,Many To Many,Playframework 2.0,Ebean,我正在尝试映射一种多对多关系,其中每个用户都有一组朋友,这些朋友也是用户。在数据库表中,可以使用名为user\u friend的关联表来解决这个问题。user_friend表有两列user1和user2,它们是user表中用户id的外键 最佳的解决方案是不为user\u friend表创建java ebean模型,而是让用户模型拥有一组用户,其中当前用户是user\u friend表中的user1或user2。然后映射必须以某种方式引用user\u friend表中的两列 这可能吗 已编辑:SQ

我正在尝试映射一种多对多关系,其中每个用户都有一组朋友,这些朋友也是用户。在数据库表中,可以使用名为user\u friend的关联表来解决这个问题。user_friend表有两列user1和user2,它们是user表中用户id的外键

最佳的解决方案是不为user\u friend表创建java ebean模型,而是让用户模型拥有一组用户,其中当前用户是user\u friend表中的user1或user2。然后映射必须以某种方式引用user\u friend表中的两列

这可能吗

已编辑:SQL for 1.SQL已添加

CREATE TABLE User (
id bigint(20) NOT NULL AUTO_INCREMENT,
email varchar2(255) NOT NULL UNIQUE,
password varchar2(255) NOT NULL,
name varchar2(255) NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE User_friend (
id bigint(20) NOT NULL AUTO_INCREMENT,
user1 bigint(20) NOT NULL,
user2 bigint(20) NOT NULL,
sent TIMESTAMP NOT NULL,
accepted TIMESTAMP,
PRIMARY KEY (ID),
FOREIGN KEY(user1) REFERENCES User(id),
FOREIGN KEY(user2) REFERENCES User(id)
);

问题是,希望每个用户实例都有一组用户,他通过成为user1或user2链接到这些用户。

听起来Ebean就是这样为您设置的:

user_friend
   user1      user2
   (user_id)  (user_id)
你为什么要改变这种多人关系?能否在“conf/evolutions/default”中为我们提供1.sql文件的相关部分

更新:

如果Java代码如下所示:

@ManyToMany
public Set<User> friends = new HashSet<User>();
@manytomy
public Set friends=new HashSet();
您应该能够通过引用user.friends获得一组好友


问题在于,您似乎希望在User\u friend表中有其他字段(已发送、已接受)。因此,您需要创建一个新的模型UserFriend来公开这些字段。

我不想公开这些字段,它们实际上只是用于日志记录。我想我可能不得不重新考虑我的数据结构……不过还是谢谢你的帮助!