Mybatis plus 多表联查字段名重复报错 Column ‘id‘ in where clause is ambiguous

小王子 1.3K 0

报错信息

Caused by: Column 'xxxx' in where clause is ambiguous

原因

在mapper中使用了多表联查,而在Mybatis  Plus中使用 LambdaQueryWrapper 就有可能出现这个错误,意思是字段名不明确。

解决

方法一

在mapper中将连接语句当作子查询,然后再使用Mybatis Plus进行条件查询

SELECT *
FROM (SELECT grower.*,
growertype.NAME AS TypeName,
Factory.`Name` AS FactoryName
FROM grower
LEFT JOIN growertype ON grower.TypeId = growertype.Id
LEFT JOIN factory ON grower.FactoryId = factory.Id)
AS result
${ew.customSqlSegment}

方法二

使用Mybatis Plus中明确的字段名称 表名.字段名

LambdaQueryWrapper<PersonVO> wrapper = new LambdaQueryWrapper<>();
wrapper.like("grower.name", keyword);
List<PersonVO> list = personVOMapper.getPersonVOList(wrapper);

发表评论 取消回复
表情 图片 链接 代码

分享