Repository navigation
fix(框架): 修复树CRUD一致性并扩展维度候选目录 - #370
Merged
Merged
Conversation
同步 Save 重载复用现有树准备;updateById 保持纯 UPDATE 和正式 Modify 事件。补齐根标记、保存入口、缺失目标与原事务回滚的真实数据库验证。 BREAKING CHANGE: 同步树 updateById 不再调用 save(E) 覆写,既有更新校验应迁移到正式 Modify 实体事件;save(E) 和 save(Collection) 执行完整树关系保存。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
树节点保存、部分更新和级联删除需要一致维护持久结构、事务及正式实体事件。本 PR 修复通用树 CRUD,并提供公共维度候选目录及树删除准备扩展点。
parentId=null或缺省保留持久父级;新增无父级仍为根。显式空串或-1为默认根标记,服务通过已有isRootNode自定义。嵌套 children 的父关系优先,历史 null 根继续识别。updateById保持纯 UPDATE、稀疏输入与正式 Modify 校验;目标零修改时停止 children,新 child 经 Save。同步部分 UPDATE 不承担结构修图。公开 PATCH 仍为 Save/upsert,三个同步 Save 入口统一准备树。prepareTreeDelete,再读取当前子树并按叶先顺序分批,SQL 与事件共享原事务。普通条件 DSL 的领域事务由业务 Service 开启。DimensionUserEntity保留已发布成员 ID 规则;维度目录经 EntityFactoryHolder/FastBeanCopier 扩展,消费者可返回 owner、描述及权限配置。集中
clean install:24 套 / 178 项通过,零失败、错误或跳过。真实 JDBC/R2DBC H2 回归覆盖 null 保父、空串/-1/自定义标记、嵌套优先、遗漏后代、BeforeSave 旧库可见性、无额外 Modify、跨批及调用方回滚,同时验证缓存、认证、DTO 工厂等受影响范围。保留当前 5.0.x 上游修复,生产优化仅在原通用树抽象中完成,没有 ORM 扩展、关闭事件或应用特定分支。同批消费验证:components 41 套 / 389 项、认证 4 套 / 41 项全部通过,共 608 项定向测试。集成部分使用真实 PostgreSQL/Redis、生产初始化、自动闭包、成员/角色/资产绑定、HTTP/JWT、资源 SQL/动作、万节点树及两个三独立 JVM 场景,包含离线/重启和持续 SSE。7 个子进程均退出,classpath 的 16 项关键制品核对无差异;测试容器已清理。
兼容边界:移根需提交非 null 根标记;旧 Save 覆写中的更新校验应迁移到正式 Modify/Save/Create 事件。普通树按既定决定不增加通用并发锁,子树快照之外的并发新增风险仍在;不自动修复历史数据,不扩大消费者原有领域父级规则。契约与复验命令见 CONTRIBUTING.md。
消费者本地验证使用同批源码安装的 framework 快照,远端合入前仍需维护者合入并发布配套制品;本次未合并远端 PR 或发布 Maven。定向测试不代表全量远端 CI 或新的覆盖率测量。