Unknown column ‘r.id‘ in ‘on clause‘解决办法

此功能是想通过五个关联表根据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报错

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值