Files
hzdyjs/docs/变更管理/code-adjust-record-2025-01-26-招聘岗位数据库字段修复.md
T
2025-07-26 15:29:31 +08:00

4.8 KiB
Raw Blame History

招聘岗位模块数据库字段修复记录

📋 基本信息

项目 信息
变更日期 2025-01-26
变更时间 15:00:00
变更人员 Cursor AI
变更类型 错误修复
影响模块 招生就业-招聘管理
变更状态 ✅ 已完成

🎯 问题描述

在“新增招聘岗位”时,后端服务抛出SQL异常,错误信息如下:

java.sql.SQLSyntaxErrorException: Unknown column 'create_dept' in 'field list'

🔍 根因分析

该错误与之前企业管理模块遇到的问题完全相同。

  1. 后端实体继承:ZsjyJobPosition 和 ZsjyRecruitmentPoster 实体类继承了 TenantEntity (其父类为BaseEntity),因此在执行插入操作时,MyBatis-Plus会自动填充 create_dept 字段。
  2. 数据库表缺失字段:zsjy_job_position 和 zsjy_recruitment_poster 数据库表中均缺少 create_dept 字段,导致SQL执行失败。

🔧 修复方案

通过执行SQL ALTER TABLE 语句,为相关的两个表添加缺失的 create_dept 字段。

生成的SQL脚本

  • 文件路径: script/fix-zsjy-tables-missing-fields.sql
  • 包含内容:
    • 为 zsjy_job_position 表添加 create_dept 字段
    • 为 zsjy_recruitment_poster 表添加 create_dept 字段
    • 包含检查和回滚语句
-- 1. 为 `zsjy_job_position` 表添加 `create_dept` 字段
ALTER TABLE `zsjy_job_position` ADD COLUMN `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门';

-- 2. 为 `zsjy_recruitment_poster` 表添加 `create_dept` 字段
ALTER TABLE `zsjy_recruitment_poster` ADD COLUMN `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门';

📊 字段一致性检查

为确保问题彻底解决,已对前端、后端、数据库三个层面的字段进行一致性检查。

zsjy_job_position 表

层面 实体/接口 create_dept 字段状态
数据库 zsjy_job_position 🔴 缺失 (待修复)
后端 (Entity) ZsjyJobPosition ✅ 存在 (继承自BaseEntity)
后端 (VO) ZsjyJobPositionVo ✅ 存在 (继承自BaseEntity)
前端 (VO) JobPositionVO ✅ 存在 (createDept)
前端 (Form) JobPositionForm ✅ 不存在 (符合预期)

zsjy_recruitment_poster 表

层面 实体/接口 create_dept 字段状态
数据库 zsjy_recruitment_poster 🔴 缺失 (待修复)
后端 (Entity) ZsjyRecruitmentPoster ✅ 存在 (继承自BaseEntity)
后端 (VO) ZsjyRecruitmentPosterVo ✅ 存在 (继承自BaseEntity)
前端 (VO) RecruitmentPosterVO ✅ 存在 (createDept)
前端 (Form) RecruitmentPosterForm ✅ 不存在 (符合预期)

结论:两张表的问题根源一致,都是数据库层面缺少标准基础字段。本次修复将彻底解决此问题。

🚀 执行步骤

  1. 执行SQL脚本:

    # 请替换为您的数据库连接信息
    mysql -h {host} -P {port} -u {user} -p{password} {database} < script/fix-zsjy-tables-missing-fields.sql
    
  2. 重启后端服务:为确保数据库变更生效,建议重启后端服务。

  3. 验证修复效果:

    • 登录前端系统
    • 进入“招聘岗位”管理页面
    • 尝试“新增”一个招聘岗位
    • 确认操作成功,无报错

📋 执行结果

SQL脚本执行成功 ✅

执行时间: 2025-01-26 15:10:00
执行环境: 研发环境 (47.99.164.66:3306/hzdyjs_xg)
执行状态: 成功,无错误

字段添加验证

zsjy_job_position 表

  • ✅ create_dept 字段已成功添加
  • ✅ 字段类型: bigint(20),允许为空
  • ✅ 表结构完整,包含19个字段

zsjy_recruitment_poster 表

  • ✅ create_dept 字段已成功添加
  • ✅ 字段类型: bigint(20),允许为空
  • ✅ 表结构完整,包含11个字段

验证步骤

现在可以进行功能验证:

  1. 测试"新增招聘岗位"功能 - 应该不再报错
  2. 测试"新增招聘海报"功能 - 应该正常工作

📝 经验总结

  1. 建表规范:所有业务表都必须严格遵循数据库设计规范,包含 BaseEntity 中定义的所有基础字段(如create_dept, create_by, create_time等)。
  2. 问题排查:遇到 Unknown column 错误时,应首先检查数据库表结构与后端实体类的字段是否一致。
  3. 一致性:保持数据库、后端实体、VO、前端类型定义的高度一致性是避免此类问题的关键。

🔗 相关文档