Many to many 同一实体中的多个
我正在尝试映射一种多对多关系,其中每个用户都有一组朋友,这些朋友也是用户。在数据库表中,可以使用名为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已添加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
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来公开这些字段。我不想公开这些字段,它们实际上只是用于日志记录。我想我可能不得不重新考虑我的数据结构……不过还是谢谢你的帮助!