Hibernate双向关联删除

时间:2014-12-17 03:25:15

标签: hibernate jpa associations spring-data-jpa bidirectional

我正在使用hibernate和Spring将数据保存在数据库中,(只是为了确保我已经使用MySQL和MSSQL进行了测试)并且我遇到了一个奇怪的行为,我正在映射我的类这是方式:

    public class User extends BaseDomain implements UserDetails {
        @OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
        private List<UserRole> userRole;
            ... 
    }

儿童实体:

public class UserRole extends BaseDomain implements GrantedAuthority {
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    @JoinColumn(name = "role_id")
    private Role role;

    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    @JoinColumn(name = "user_id")
    private User user;
... 
}

此时,如果我尝试删除用户,则可以:

Hibernate: delete from user_role where id=?
Hibernate: delete from user where id=?

但是,当我添加第二个父类时,我的问题就出现了:

public class Role extends BaseDomain {
    @OneToMany(mappedBy = "role", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<UserRole> userRole;
...
}

从现在开始,hibernate只删除父(User)实体,导致异常。 我猜测我的映射有什么问题? 提前致谢。 OBS:每个其他数据库操作都可以。我也尝试Set&lt;&gt;。

更新

如果让我的第二个父类如下所示映射,它可行,但是,现在我无法从Role方面删除子项,是否有办法在两边保持相同的行为?

@OneToMany(mappedBy = "perfil", orphanRemoval = true)
private List<UserRole> userRole;

0 个答案:

没有答案
相关问题