diff --git a/.workbuddy/memory/2026-09-03.md b/.workbuddy/memory/2026-09-03.md new file mode 100644 index 0000000..c2cd0ac --- /dev/null +++ b/.workbuddy/memory/2026-09-03.md @@ -0,0 +1,10 @@ +# 2026-09-03 + +## 修复:素材管理搜索报 Unknown column 'b.name' + +- 文件:`src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml` +- 根因:`selectSql` 的 `keywords` 模糊搜索块(2024-11-25 提交 cf4f010 引入,疑似从 UserVerifyMapper 复制过来未改别名)写成了 `b.name` / `b.comments`。 + 该块中 `a` = sys_file_record,`b` = sys_user;sys_user **没有** `name` 字段(只有 username / nickname / real_name / phone),故 MySQL 报 `Unknown column 'b.name' in 'where clause'`。 +- 修复:关键词改为搜索文件侧字段 `a.name` / `a.path` / `a.comments`,加上传者 `b.username` / `b.nickname` / `b.real_name`; + `a.create_user_id = #{param.keywords}` 用 `` 包住,避免非数字关键词被 MySQL 隐式转成 0。 +- 教训:跨 mapper 复制动态 SQL 片段时,务必核对表别名与目标表字段(sys_user 无 name 列)。 diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml index 6a08242..dddea41 100644 --- a/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml @@ -59,13 +59,19 @@ AND a.content_type LIKE CONCAT('%', #{param.contentType}, '%') - - AND ( - a.create_user_id = #{param.keywords} - OR b.name LIKE CONCAT('%', #{param.keywords}, '%') - OR b.comments LIKE CONCAT('%', #{param.keywords}, '%') - ) - + + AND ( + a.`name` LIKE CONCAT('%', #{param.keywords}, '%') + OR a.path LIKE CONCAT('%', #{param.keywords}, '%') + OR a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR b.username LIKE CONCAT('%', #{param.keywords}, '%') + OR b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.real_name LIKE CONCAT('%', #{param.keywords}, '%') + + OR a.create_user_id = #{param.keywords} + + ) +