From 3d036c4cd69c5ec232a297835137ef3312f12c3c Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 3 Feb 2026 09:35:09 +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 问题描述: 在数据管理的数据集编辑中,如果之前设置了关联数据集,编辑时选择不关联数据集后保存不会生效。 问题原因: 后端 updateDataset 方法中的条件判断: ```java if (updateDatasetRequest.getParentDatasetId() != null) { handleParentChange(dataset, updateDatasetRequest.getParentDatasetId()); } ``` 当 parentDatasetId 为 null 或空字符串时,条件判断为 false,不会执行 handleParentChange,导致无法清除关联数据集。 修复方案: 去掉条件判断,始终调用 handleParentChange。handleParentChange 内部通过 normalizeParentId 方法将空字符串和 null 都转换为 null,这样既支持设置新的父数据集,也支持清除关联。 配合前端修改(commit 2445235),将空字符串转换为 undefined(被后端反序列化为 null),确保清除关联的操作能够正确执行。 --- .../application/DatasetApplicationService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java index 8f13ac5..7b7c0b4 100644 --- a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java +++ b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java @@ -113,9 +113,10 @@ public class DatasetApplicationService { if (Objects.nonNull(updateDatasetRequest.getStatus())) { dataset.setStatus(updateDatasetRequest.getStatus()); } - if (updateDatasetRequest.getParentDatasetId() != null) { - handleParentChange(dataset, updateDatasetRequest.getParentDatasetId()); - } + // 处理父数据集变更:始终调用 handleParentChange,以支持设置新的关联或清除关联 + // handleParentChange 内部通过 normalizeParentId 方法将空字符串和 null 都转换为 null + // 这样既支持设置新的父数据集,也支持清除关联 + handleParentChange(dataset, updateDatasetRequest.getParentDatasetId()); if (StringUtils.hasText(updateDatasetRequest.getDataSource())) { // 数据源id不为空,使用异步线程进行文件扫盘落库 processDataSourceAsync(dataset.getId(), updateDatasetRequest.getDataSource());