0

私は、すべてのユーザーがユーザーでもある一連の友人を持つ多対多の関係をマッピングしようとしています。データベース テーブルでは、これは user_friend という関連付けテーブルを使用して解決されます。user_friend テーブルには、user1 と user2 の 2 つの列があり、user テーブル内のユーザー ID への外部キーです。

最適な解決策は、user_friend テーブルの Java ebean モデルを作成せず、ユーザー モデルにユーザーのセットを持たせることです。現在のユーザーは、user_friend テーブルの user1 または user2 です。マッピングは、user_friend テーブルの 2 つの列を何らかの方法で参照する必要があります...

これは可能ですか?

編集: 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 としてリンクされているユーザーのセットを持たせることです。

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 に答える