From cc6415c4d9738a9dc10ac038cff45f8af2ff94b9 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 3 Feb 2026 10:57:08 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=97=B6=E6=97=A0=E6=B3=95=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E5=85=B3=E8=81=94=E6=95=B0=E6=8D=AE=E9=9B=86=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题描述: 在数据管理的数据集编辑中,如果之前设置了关联数据集,编辑时选择不关联数据集后保存不会生效。 根本原因: MyBatis-Plus 的 updateById 方法默认使用 FieldStrategy.NOT_NULL 策略, 只有当字段值为非 null 时才会更新到数据库。 当 parentDatasetId 从有值变为 null 时,默认情况下不会更新到数据库。 修复方案: 在 Dataset.java 的 parentDatasetId 字段上添加 @TableField(updateStrategy = FieldStrategy.IGNORED) 注解, 表示即使值为 null 也需要更新到数据库。 配合前端修改(恢复发送空字符串),现在可以正确清除关联数据集: 1. 前端发送空字符串表示"无关联数据集" 2. 后端 handleParentChange 通过 normalizeParentId 将空字符串转为 null 3. dataset.setParentDatasetId(null) 设置为 null 4. 由于添加了 IGNORED 策略,即使为 null 也会更新到数据库 --- .../datamate/datamanagement/domain/model/dataset/Dataset.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java index cf5375f..603fa5b 100644 --- a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java +++ b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java @@ -1,5 +1,6 @@ package com.datamate.datamanagement.domain.model.dataset; +import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; @@ -31,6 +32,7 @@ public class Dataset extends BaseEntity { /** * 父数据集ID */ + @TableField(updateStrategy = FieldStrategy.IGNORED) private String parentDatasetId; /** * 数据集类型