此功能是想通过五个关联表根据id查询用户权限信息 //根据用户id查询用户所有权限 @Select(value = "select p.id,p.name " + "from user u " + "left join user_role ur on u.id = ur.user_id " + "left join role on r.id = ur.role_id " + "left join role_permission rp on r.id = rp.role_id " + "left join permission p on p.id = rp.permission_id " + "where u.id = #{userId} " )
但在实际运行中出现错误
这句话的字面意思就是找不到 r.id 列,即role表格的id列。
网上有一种解决办法说mysql 5.0存在bug,需要给查询的关联表加上(),但是我这里只有一个from user u,所以不存在加括号的情况。排除!
通过网上搜索得知还有可能是简写无法识别,而要写成表名,于是我把 r.id 改成了 role.id ,再次运行,通过了!
如图
惊喜之余还是存在着疑问,其他的表格如permission 的 p.id 和 p.name 都没问题,为什么到了role 的 r.id就不行了。如有前辈不吝赐教,不胜感激!
另外还有一个技巧:在运行中存在运行失败的情况时,可以先在数据库可视化下进行测试,如果测试不能通过很有可能是表格的问题,而如果测试通过说明是代码出现了问题。我这里就是代码出现了问题,如图可以明显看出r.id报错