Java Eclipselink合并不会在多对多关系中插入新行

Java Eclipselink合并不会在多对多关系中插入新行,java,jpa,many-to-many,eclipselink,Java,Jpa,Many To Many,Eclipselink,我在用户和角色实体之间存在多对多关系。当我试图通过向角色添加新的用户对象来合并角色时,合并后,我希望在sql server数据库的联接表中插入一个新行,但什么也没有发生 我猜问题是关系的方向,所有者现在是用户实体,应该切换到角色。但是,如果我改变它,那么我的春季安全将无法工作。还有别的办法解决这个问题吗?除了多方面的改变? 提前谢谢 用户类 @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinTable

我在用户和角色实体之间存在多对多关系。当我试图通过向角色添加新的用户对象来合并角色时,合并后,我希望在sql server数据库的联接表中插入一个新行,但什么也没有发生

我猜问题是关系的方向,所有者现在是用户实体,应该切换到角色。但是,如果我改变它,那么我的春季安全将无法工作。还有别的办法解决这个问题吗?除了多方面的改变? 提前谢谢

用户类

@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(
            name = "SEC_USER_ROLE",
            joinColumns = {
                @JoinColumn(name = "SEC_USER_ID", referencedColumnName = "SEC_USERS")},
            inverseJoinColumns = {
                @JoinColumn(name = "SEC_ROLE_ID", referencedColumnName = "SEC_ROLES")})
    private List<Role> roles;  

只是胡乱猜测。也许您还需要声明级联类型。这不是问题所在。无论如何,谢谢你:你提到你正在向一个新角色添加一个新用户。是否也插入了用户?您是否设置了这种双向关系的双方,或者仅设置了角色->用户关系?这两个方面都需要设置,特别是用户->角色方面,因为只有这一点才会反映在数据库中。我正在向现有角色添加用户,是的,我在这里包含了源代码。它是双向的,我已经设置了两边
@ManyToMany(mappedBy = "roles", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<User> users;
@Override
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public T merge(T o) {

    o = em.merge(o);
    em.flush();
    return o;
}