4

Ebean を ORM として使用する Play Framework 2.0 を使用して、小さなアプリを作成しています。したがって、 User クラスと UserGroup クラスの間に多対多の関係が必要です。ここにいくつかのコードがあります:

@Entity
public class User extends Domain {

    @Id
    public Long id;
    public String name;

    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    public Set<UserGroup> groups = new HashSet();
}



@Entity
public class UserGroup extends Domain {

    @Id
    public Long id;     
    public String name;

    @ManyToMany(mappedBy="groups")
    public Set<User> users = new HashSet();
}

データベーススキームジェネレーターは、中間テーブルを使用してそのコードの適切なスキームを生成し、多対多を使用するまではすべて正常に機能します。

だから私は1つのリクエストでグループを追加しています:

user.groups.add(UserGroup.find.byId(groupId));
user.update();

そして、それらを別の System.out に出力しようとしています:

System.out.println(user.groups);

そして、これは次を返します:

BeanSet 遅延

クイック検索は、BeanSet が Ebean からの遅延読み込みコンテナーであることを示しています。しかし、それが適切に機能していないように思われるか、何か重要なことを見逃していました。

私が間違っていることについて何か考えはありますか?

4

1 に答える 1

9

関連付けを手動で保存する必要があります

user.groups.add(UserGroup.find.byId(groupId));
user.saveManyToManyAssociations("groups");
user.update();
于 2012-06-24T08:54:14.927 に答える