Role

/xml配置文件/Hibernate的类的配置/Role.hbm.xml
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping> 
    <class name="com.domain.Role" table="sys_role">
        <id name="role_id" column="role_id">
            <generator class="native"></generator>
        </id>
        
        <property name="role_name"></property>
        <property name="role_memo"></property>

        
        <!-- 配置多对多的关系 集合 对象是role
        name:集合的名字,name=su表示Role类里有private Set<User> su = new HashSet<User>();
        table:中间表的名字

        set:key:自己在中间表的外键字段名
        set:class:对方的全限定名
        set:column:对方在中间表的外键字段名
        
        role和user都会管理外键,只需要一个管理即可,设置被动的一方inverse=true放弃管理。
        这时代码r1.getSu().add(u1);se.save(r1);表示保存r1时会因为cascade保存u1,
        但由于不管理外键,所以中间表不会有数据,即相当于r1和u1没有建立外键关系。
        由于设置了delete,删除某role会在user表删除其关联的所有user,并在中间表删除相关的所有数据。
         -->
        <set name="su" table="sys_user_role" inverse="true"  cascade="save-update">
            <key column="wj_role_id"></key>
            <many-to-many class="com.domain.User" column="wj_user_id"/>
        </set>    
        <!-- 比如r1的set有u1,u2,u3,r2的set有u1,u2,那么删除u1的r1权限,
        只需将r1.getSu().remove(u1)再update r1,或者u1.getSr().remove(r1)
        再update u1提交即可,但是现在r1不管理外键,所以只能用后者。添加权限
        类似只用后者,修改权限则是先删除后添加。-->
</hibernate-mapping>

猜你喜欢

转载自blog.csdn.net/weixin_43292547/article/details/89309917