日期:2014-05-19  浏览次数:20717 次

【求助】Hibernate 注解ManyToMany出错

User.java

    /** * @return roles. */
    @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY)
    @JoinTable(name = "tb_user_role", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })
    public Set<Role> getRoles() {
        return roles;
    }


为什么修改user对象的之后,会级联删除关联的role对象啊 ,,搞不懂啊!!!!!!!!!!!!!!!!

------解决方案--------------------
我也想知道,顶
------解决方案--------------------
表是hibernate生成的,还是你自己建的?如果是自动生成的,那你要修改别的外键属性了。
------解决方案--------------------
因为有ManyToMany这个关系,
在你保存user时,你user对象中roles为空,所以hibernate就以为你要删除这个user的roles
个人觉得这个ManyToMany关系你可以不用加,需要的时候查出来就是了。
------解决方案--------------------
casecade不要设置级联