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();
}

数据库方案生成器为带有中间表的代码生成良好的方案,并且一切正常,直到我使用多对多。

所以我在一个请求中添加组:

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 回答