hibernate 级联删除时候的两种情况 之(二) 删除从表,无法删除关系表

其中从表是关系被维护端:

 

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,数据库,user,table,delete,Class)