0

我正在尝试映射多对多的关系,其中每个用户都有一组朋友,这些朋友也是用户。在数据库表中,这是使用名为 user_friend 的关联表解决的。user_friend 表有两列 user1 和 user2 是用户表中用户 ID 的外键。

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

这可能吗?

已编辑:添加了 1.sql 的 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 链接到这些用户。

4

1 回答 1

1

听起来这正是 Ebean 为您设置的方式:

user_friend
   user1      user2
   (user_id)  (user_id)

为什么要更改 ManyToMany 关系?您能否在“conf/evolutions/default”中向我们提供您的 1.sql 文件的相关部分?

更新:

如果您的 Java 代码如下所示:

@ManyToMany
public Set<User> friends = new HashSet<User>();

您应该能够通过引用 user.friends 来获得一组朋友。

问题是您似乎希望在 User_friend 表中包含其他字段(已发送、已接受)。因此,您需要创建一个公开这些字段的新模型 UserFriend。

于 2012-08-29T17:17:31.730 回答