hibernate 级联删除时候的两种情况 之(二) 删除从表,无法删除关系表
2011-03-02 00:41
190 查看
其中从表是关系被维护端:
Hibernate实现多对多关系映射有两种方法:
1.通过配置两个一对多来实现多对多,既三张数据表,三个实体,同时配置<component>组件模块,唯一缺点是要同时实现这个外键中间表的增删查改功能.
2.通过配置双方的<set>模块来实现,同时两个实体的bo对象都有对方的Set集合,而inverse必须设置主控方为false,被控方为inverse=true,如果双方都为true(即都为被控方)那就没人来维护关系,那么更新/删除数据时无论哪一方都不会去更新/删除中间表的数据...通过Hibernate配置后已经可以实现主控方删除时能删除本身数据和中间表数据,而被控方只能删除本身表的数据,中间表的数据仍然存在....要想实现被控方删除时同时删除中间表数据,需要去数据库中设置外键中间表的关联关系为delete cascade就可以了..
以下为hibernate配置:
User:
<set name="roles" table="userrole" inverse="false">
<key column="username"/>
<many-to-many class="com.incesoft.ui.bo.Role" column="id" />
</set>
Role:
<set name="users" table="userrole" inverse="true">
<key column="id"/>
<many-to-many class="com.incesoft.ui.bo.User" column="username" />
</set>
Hibernate实现多对多关系映射有两种方法:
1.通过配置两个一对多来实现多对多,既三张数据表,三个实体,同时配置<component>组件模块,唯一缺点是要同时实现这个外键中间表的增删查改功能.
2.通过配置双方的<set>模块来实现,同时两个实体的bo对象都有对方的Set集合,而inverse必须设置主控方为false,被控方为inverse=true,如果双方都为true(即都为被控方)那就没人来维护关系,那么更新/删除数据时无论哪一方都不会去更新/删除中间表的数据...通过Hibernate配置后已经可以实现主控方删除时能删除本身数据和中间表数据,而被控方只能删除本身表的数据,中间表的数据仍然存在....要想实现被控方删除时同时删除中间表数据,需要去数据库中设置外键中间表的关联关系为delete cascade就可以了..
以下为hibernate配置:
User:
<set name="roles" table="userrole" inverse="false">
<key column="username"/>
<many-to-many class="com.incesoft.ui.bo.Role" column="id" />
</set>
Role:
<set name="users" table="userrole" inverse="true">
<key column="id"/>
<many-to-many class="com.incesoft.ui.bo.User" column="username" />
</set>
相关文章推荐
- hibernate 级联删除时候的两种情况 之(一) 删除主表、关系表跟从一并都删除了
- hibernate配置多对一的关系的时候,从多方删除信息报错
- hibernate 父子表级联删除的两种应用情景
- 处理hibernate多重级联关系下的删除解决方法
- Hibernate在删除一个游离对象的时候,是不会更新该游离对象的
- hibernate级联关系 -----一对一
- Remove Element针对删除元素多和少的两种情况解析
- oracle三对内存参数间关系之3AMM启动和关闭两种情况下ASMM机制涉及的一对参数间的关系探讨
- sqlserver中多行所有数据重复,无法更新或删除问题,通常是在没有主键的情况下的表
- hibernate之xml映射文件关系维护,懒加载,级联
- Hibernate继承关系的实体设计的两种方法
- 关于删除文件夹下所有文件的部分文件无法删除的情况
- 4、Hibernate 实体关系映射(一、单边一对多关系 注解、xml两种方式)
- hibernate之级联cascade和关系维持inverse
- Hibernate中配置级联删除
- Hibernate中的级联一对多关系
- Hibernate的映射关系与级联(一对一、一对多、多对多)
- hibernate 级联删除报更新失败的问题
- Hibernate如果进行一对多级联删除
- 删除用户的时候,产生“数据库主体在该数据库中拥有架构,无法删除”的解决办法