使用包含自身的类的resultMap进入死循环


Department {
Department parentDepartment;
}

如果设置查询映射
<!--查看指定部门-->
    <select id="selectDepartmentByPrimaryKey" resultMap="departmentResult" parameterClass="integer">
        select DEPARTMENTID, SCHOOLID, PDEPARTMENTID,DEPARTMENTNAME, DEPARTMENTDESCRIBE, DEPARTMENTCODE
            from S_DEPARTMENT
            where DEPARTMENTID = #departmentId#
    </select>

<resultMap id="departmentResult" class="org.dreamfly.core.model.Department">
        <result property="departmentId" column="DEPARTMENTID"/>
        <result property="school" column="SCHOOLID" select="selectSchoolByPrimaryKey"/>
        <result property="pdepartment" column="PDEPARTMENTID" select=" selectDepartmentByPrimaryKey"/>
        <result property="departmentName" column="DEPARTMENTNAME"/>
        <result property="departmentDescribe" column="DEPARTMENTDESCRIBE"/>
        <result property="departmentCode" column="DEPARTMENTCODE" />
    </resultMap>

这样会导致查询进入死循环.查询会一直查找他的父部门类

解决方案

<resultMap id="departmentResult" class="org.dreamfly.core.model.Department">
        <result property="departmentId" column="DEPARTMENTID"/>
        <result property="school" column="SCHOOLID" select="selectSchoolByPrimaryKey"/>
        <result property="pdepartment" column="PDEPARTMENTID" select=" selectParentDepartmentByPrimaryKey"/>
        <result property="departmentName" column="DEPARTMENTNAME"/>
        <result property="departmentDescribe" column="DEPARTMENTDESCRIBE"/>
        <result property="departmentCode" column="DEPARTMENTCODE" />
    </resultMap>

加上一个

<!--查询上级部门,不查询上级部门的上级部门-->
    <select id="selectParentDepartmentByPrimaryKey" resultClass="org.dreamfly.core.model.Department" parameterClass="integer"
            cacheModel="otherCodeCache">
        select DEPARTMENTID, DEPARTMENTNAME, DEPARTMENTDESCRIBE, DEPARTMENTCODE
            from S_DEPARTMENT
            where DEPARTMENTID = #departmentId#
    </select>

猜你喜欢

转载自chinagdvea.iteye.com/blog/1067637
今日推荐