假如我有表menu(menuId,menuName,location)和表role(roleId,roleName)和关系表role_menu(id,roleId,menuId)
表中数据
menu: role: role_menu:
menuId menuName location roleId roleName id roleId menuId
1 aa aa 1 aa 1 1 1
2 bb bb 2 bb 2 1 2
3 cc cc 3 cc 3 1 3
4 2 1
5 2 2
6 3 3
现在假如当我删除表menu中menuId为1的数据时,hibernate会自动帮我删除表role_menu中menuId为1的数据(1、4),表role中的数据不变。当我删除表role中roleId为1的数据时,hibernate会自动帮我删除表role_menu中roleId为1的数据(1、2、3),表role中的数据不变。修改表menu中的数据或者表role中的数据时,其他表中的数据不表,关系表中的数据也不删除。
menu.hbm.xml:
___________________________________________________________________________________
<set name="roles" table="role_menu" lazy="true" cascade="save-update">
<key column="menuId" />
<many-to-many class="com.yinbo.model.Role" column="roleId" outer-join="auto" />
</set>
____________________________________________________________________________________
role.hbm.xml:
<set name="menuItems" table="role_menu" lazy="true" cascade="save-update">
<key column="roleId" />
<many-to-many class="com.yinbo.model.MenuItem" column="menuId" outer-join="auto" />
</set>当我这样配置时,删除的话可以达到需求,但每次一修改menu中的记录,关系表中对应的记录就会被删除,修改role中的数据时,关系表中的记录不会被删除。
求教各位大侠我应该怎么配置关系才能完全达到需求。
表中数据
menu: role: role_menu:
menuId menuName location roleId roleName id roleId menuId
1 aa aa 1 aa 1 1 1
2 bb bb 2 bb 2 1 2
3 cc cc 3 cc 3 1 3
4 2 1
5 2 2
6 3 3
现在假如当我删除表menu中menuId为1的数据时,hibernate会自动帮我删除表role_menu中menuId为1的数据(1、4),表role中的数据不变。当我删除表role中roleId为1的数据时,hibernate会自动帮我删除表role_menu中roleId为1的数据(1、2、3),表role中的数据不变。修改表menu中的数据或者表role中的数据时,其他表中的数据不表,关系表中的数据也不删除。
menu.hbm.xml:
___________________________________________________________________________________
<set name="roles" table="role_menu" lazy="true" cascade="save-update">
<key column="menuId" />
<many-to-many class="com.yinbo.model.Role" column="roleId" outer-join="auto" />
</set>
____________________________________________________________________________________
role.hbm.xml:
<set name="menuItems" table="role_menu" lazy="true" cascade="save-update">
<key column="roleId" />
<many-to-many class="com.yinbo.model.MenuItem" column="menuId" outer-join="auto" />
</set>当我这样配置时,删除的话可以达到需求,但每次一修改menu中的记录,关系表中对应的记录就会被删除,修改role中的数据时,关系表中的记录不会被删除。
求教各位大侠我应该怎么配置关系才能完全达到需求。
<hibernate-mapping>
<class table="t_userrole" name="com.zzq.model.UserRole">
<id name="id">
<generator class="native"/>
</id>
<many-to-one name="role"/>
<many-to-one name="user"/>
</class>
</hibernate-mapping><hibernate-mapping>
<class table="t_user" name="com.zzq.model.User">
<id name="id">
<generator class="native"/>
</id>
<property name="username" length="30" not-null="true" unique="true"/>
<property name="password" length="30" not-null="true"/>
</class>
</hibernate-mapping><hibernate-mapping>
<class table="t_role" name="com.zzq.model.Role">
<id name="id">
<generator class="native"/>
</id>
<property name="name" length="30" not-null="true" unique="true"/>
</class>
</hibernate-mapping>