Avaje Ebean。 多对多推迟BeanSet(Avaje Ebean. ManyToMan

2019-09-18 10:49发布

我写的小应用程序,使用播放框架2.0,它使用Ebean作为ORM。 所以,我需要多到许多用户级和用户组类之间的关系。 下面是一些代码:

@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延迟加载容器。 但好像它不恰当的方式工作,或者我错过了一些重要的东西。

那么,有没有什么我做错了任何想法?

Answer 1:

您需要手动保存协会

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


文章来源: Avaje Ebean. ManyToMany deferred BeanSet