mybatis association再嵌套association使用问题

今天在作权限的时候用到了2级association,association里面还有一级association,废话很少说。贴代码java

<resultMap type="com.pinyu.system.entity.PermissionEntity" id="baseResultMap">
		<result column="id" property="id"/>
		<result column="name" property="name"/>
		<result column="code" property="code"/>
		<result column="url" property="url"/>
		<result column="type" property="type"/>
		<result column="menu_id" property="menuId"/>
		<association property="menu" javaType="com.pinyu.system.entity.MenuEntity" column="{id=menu_id}" select="findMenu">
			<result column="id" property="id"/>
			<result column="name" property="name"/>
			<result column="icon" property="icon"/>
			<result column="url" property="url"/>
			<result column="level" property="level"/>
			<result column="parent_id" property="parentId"/>
			<result column="sort" property="sort"/>
			<association property="parent" javaType="com.pinyu.system.entity.MenuEntity" column="{id=parent_id}" select="findMenu">
				<result column="id" property="id"/>
				<result column="name" property="name"/>
				<result column="icon" property="icon"/>
				<result column="url" property="url"/>
				<result column="level" property="level"/>
				<result column="parent_id" property="parentId"/>
				<result column="sort" property="sort"/>
			</association>
		</association>
	</resultMap>
<select id="findPermissionByRoleId" parameterType="java.lang.Integer" resultMap="baseResultMap">
select p.* from sys_role_permission rp,sys_permission p where rp.role_id=#{roleId} and rp.permission_id=p.id;
</select>
<select id="findMenu" resultType="com.pinyu.system.entity.MenuEntity">
		select * from sys_menu where id = #{id} 
</select>

先说明下状况:PermissionEntity是按钮级别的权限,MenuEntity是菜单,PermissionEntity关联了MenuEntity的id,MenuEntity里面还有上一级父菜单,下一级子菜单先不说。url

最开始是以上代码,能够查询到第一级association里面的menu的信息,觉得menu里面还有一级父菜单,因而往里面再添加了一个association,可是最终结果menu里面的parent_id和parent始终是取不到的,不知道是写法不对仍是什么,有知道的还望告知,十分感谢。code

 

编译也不报错,启动也不报错,查询也不报错。后来找了半个小时实在没找到错误在哪里?就换方式了ci

换成了如下方式,先把PermissionEntity关联的菜单一并查出来再经过parent_id去查询父菜单。it

代码:io

<resultMap type="com.pinyu.system.entity.PermissionEntity" id="menuMap">
			<result column="id" property="id"/>
			<result column="name" property="name"/>
			<result column="code" property="code"/>
			<result column="url" property="url"/>
			<result column="type" property="type"/>
			<result column="menu_id" property="menuId"/>
			<association property="menu" javaType="com.pinyu.system.entity.MenuEntity">
				<result column="mid" property="id"/>
				<result column="mname" property="name"/>
				<result column="micon" property="icon"/>
				<result column="murl" property="url"/>
				<result column="mlevel" property="level"/>
				<result column="msort" property="sort"/>
				<result column="mparentId" property="parentId"/>
				<association property="parent" javaType="com.pinyu.system.entity.MenuEntity" column="{id=mparentId}" select="findMenu">
					<result column="id" property="id"/>
					<result column="name" property="name"/>
					<result column="icon" property="icon"/>
					<result column="url" property="url"/>
					<result column="level" property="level"/>
					<result column="parent_id" property="parentId"/>
					<result column="sort" property="sort"/>
				</association>
			</association>
	</resultMap>

<select id="findMenu" resultType="com.pinyu.system.entity.MenuEntity">
		select * from sys_menu where id = #{id} 
	</select>

<select id="findPermissionByRoleId" parameterType="java.lang.Integer" resultMap="menuMap">
	select p.*,m.id mid,m.name mname,m.icon micon,m.level mlevel,m.parent_id mparentId,m.sort msort,m.url murl 
	from sys_role_permission rp,sys_permission p,sys_menu m 
	where rp.role_id=#{roleId} and rp.permission_id=p.id and p.menu_id=m.id;
</select>

作个记录,以避免之后遇到浪费时间。编译

第一种若是有大神知道的,真心但愿告知。十分感谢 !class