142 Star 1.4K Fork 248

fluent-mybatis / fluent-mybatis

 / 详情

生成连表查询语句的时候, 如果有嵌套sql, 嵌套的sql里的查询条件没有指定表别名

已完成
创建于  
2021-10-26 17:53

生成的sql语句 (省略了字段名)

SELECT ... FROM `表1` a_9 LEFT JOIN `表2` a_10 ON a_9.`xxx` = a_10.`yyy` WHERE a_9.`status` = ? AND (`name` LIKE ? OR `aaa` LIKE ? OR `bbb` LIKE ?)

报错:

Column 'name' in where clause is ambiguous

原因:
表1和表2里面都有name这个字段, 而嵌套语句里的字段没有指定表别名 a_9 或 a_10, 希望修复

评论 (3)

CrazyKid 创建了任务
CrazyKid 修改了描述
展开全部操作日志

能提供构造语句的截图不,方便我复现场景

LeftQuery leftQuery = new LeftQuery()
     .where.status().eq(1) // <-- 这句没问题, 可以正确给status字段指定表别名
     .and(q -> q.where.name().like(searchDTO.getKeyword(), ObjectUtil::isNotEmpty).or.其它条件.end()) // <-- 这句嵌套没有给字段指定表别名
     .end();
RightQuery rightQuery = new RightQuery() 
     .where.name().like(searchDTO.getDeptName(), ObjectUtil::isNotEmpty) // <-- 这句也没问题
     .end();

return mapper.listPoJos(leftQuery.join(JoinType.LeftJoin, rightQuery)
     .on(l -> l.where.rightId(), r -> r.where.id()).endJoin().build(),
             map -> {
                 //省略mapFunction内容..
             });
稻草江南 任务状态待办的 修改为进行中
稻草江南 任务状态进行中 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
Java
1
https://gitee.com/fluent-mybatis/fluent-mybatis.git
git@gitee.com:fluent-mybatis/fluent-mybatis.git
fluent-mybatis
fluent-mybatis
fluent-mybatis

搜索帮助