我正在编写小应用程序,使用Play Framework 2.0,它使用Ebean作为ORM。 所以我需要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的延迟加载容器。但似乎它没有以适当的方式工作或我错过了重要的事情。
关于我做错了什么,有什么想法吗?
答案 0 :(得分:9)
您需要手动保存关联
user.groups.add(UserGroup.find.byId(groupId));
user.saveManyToManyAssociations("groups");
user.update();