fix: exists 条件中的表别名和父查询保持一致

This commit is contained in:
cybzzz 2025-03-16 20:27:58 +08:00
parent b326a824b8
commit 5afd03c948
3 changed files with 12 additions and 1 deletions

View File

@ -15,6 +15,7 @@
*/
package com.mybatisflex.core.dialect;
import com.mybatisflex.core.query.QueryTable;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.row.Row;
import com.mybatisflex.core.table.TableInfo;
@ -64,6 +65,10 @@ public interface IDialect {
String buildSelectSql(QueryWrapper queryWrapper);
default String buildSelectSql(QueryWrapper queryWrapper, List<QueryTable> contextTables) {
return buildSelectSql(queryWrapper);
}
String buildNoSelectSql(QueryWrapper queryWrapper);
String buildDeleteSql(QueryWrapper queryWrapper);

View File

@ -395,10 +395,16 @@ public class CommonsDialectImpl implements IDialect {
////////////build query sql///////
@Override
public String buildSelectSql(QueryWrapper queryWrapper) {
return buildSelectSql(queryWrapper, Collections.emptyList());
}
@Override
public String buildSelectSql(QueryWrapper queryWrapper, List<QueryTable> contextTables) {
List<QueryTable> queryTables = CPI.getQueryTables(queryWrapper);
List<QueryTable> joinTables = CPI.getJoinTables(queryWrapper);
List<QueryTable> allTables = CollectionUtil.merge(queryTables, joinTables);
allTables = CollectionUtil.merge(allTables, contextTables);
List<QueryColumn> selectColumns = CPI.getSelectColumns(queryWrapper);

View File

@ -48,7 +48,7 @@ public class OperatorSelectCondition extends QueryCondition {
//检测是否生效
if (checkEffective()) {
String childSql = dialect.buildSelectSql(queryWrapper);
String childSql = dialect.buildSelectSql(queryWrapper, queryTables);
if (StringUtil.hasText(childSql)) {
QueryCondition prevEffectiveCondition = getPrevEffectiveCondition();
if (prevEffectiveCondition != null && this.connector != null) {