You've already forked DataMate
问题分析: 之前尝试使用 @TableField(updateStrategy = FieldStrategy.IGNORED/ALWAYS) 注解 来强制更新 null 值,但 FieldStrategy.ALWAYS 可能不存在于当前 MyBatis-Plus 3.5.14 版本中,导致编译错误。 修复方案: 1. 移除 Dataset.java 中 parentDatasetId 字段的 @TableField(updateStrategy) 注解 2. 移除不需要的 import com.baomidou.mybatisplus.annotation.FieldStrategy 3. 在 DatasetApplicationService.updateDataset 方法中: - 添加 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper - 保存原始的 parentDatasetId 值用于比较 - handleParentChange 之后,检查 parentDatasetId 是否发生变化 - 如果发生变化,使用 LambdaUpdateWrapper 显式地更新 parentDatasetId 字段 - 这样即使值为 null 也能被正确更新到数据库 原理: MyBatis-Plus 的 updateById 方法默认只更新非 null 字段。 通过使用 LambdaUpdateWrapper 的 set 方法,可以显式地设置字段值, 包括 null 值,从而确保字段能够被正确更新到数据库。