Repository navigation
Conversation
同步 Save 重载复用现有树准备;updateById 保持纯 UPDATE 和正式 Modify 事件。补齐根标记、保存入口、缺失目标与原事务回滚的真实数据库验证。 BREAKING CHANGE: 同步树 updateById 不再调用 save(E) 覆写,既有更新校验应迁移到正式 Modify 实体事件;save(E) 和 save(Collection) 执行完整树关系保存。
This branch has not been deployed
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表示移根,维护未提交后代的 path/level;遗漏 children 不删除后代。公开PATCH /资源保持批量 Save/upsert,普通业务列 null 沿用 ORM 写入规则。-1均检查 parentId;实体自身 ID 为-1且有合法父级时仍是普通节点。同步save(E)、save(Collection)统一委托既有save(List),三个入口采用同一树准备和事务/事件链。updateById保持部分更新与纯 UPDATE:null 保留持久值,目标零修改时停止 children;已有节点经过完整 Modify before/after,新 child 经过 Save。公开PUT /资源/{id}保持该入口。同步updateById直接仓储 UPDATE,缺失目标返回零,已有目标通过正式 Modify 校验;同步树结构变化通过完整 Save 提交。prepareTreeDelete,再读取当前 seeds/path 与最终子树,按叶先顺序分批删除;路径、正式事件和各批 SQL 共用树操作事务。普通条件 DSL 的领域事务由实际业务 Service 开启。DimensionUserEntity保留原成员 ID 生成规则,动态维度类型不改变旧成员身份。集中验证:framework 17 套 / 124 个定向测试,123 通过、1 个既有跳过(
EntityEventListenerTest.testInsertError)、0 failure/error。真实 JDBC/R2DBC H2、HTTP 接口和正式实体事件覆盖移根、部分更新、分组隔离、后代维护、删除准备、多批、取消及事务回滚。新增TreeRootMarkerRegressionTest7 个与SyncTreeEntryPointContractTest8 个用例全部通过,覆盖根标记和 ID 反例、三个同步 Save 入口、缺失目标纯 UPDATE,以及正式 Modify 拒绝后调用方先前写入和整树快照回滚。消费者使用已验证的新 CRUD 制品重新运行 components
TagControllerTest18 个用例及 auth 三 JVM 长场景 1 个用例,全部通过。后者使用真实 PostgreSQL/Redis、生产初始化、登录/签名 JWT、HTTP 绑定、资源 SQL/动作和持续 SSE,覆盖业务停机/重启、树移动、成员撤权/新增及类型禁用;认证和资源节点不加载业务种子或应用实现类。4 个新子进程全部退出、2 个测试容器全部移除。合计本次新运行 19 套 / 143 个用例,142 通过、1 个既有跳过;这是分层定向范围,不是全框架测试或 143 个端到端场景。独立 JaCoCo 使用新 exec、append=false、唯一 session,没有累加历史数据:
整个 CRUD 模块在上述 17 套定向测试中的行/分支覆盖率为 37.29%/29.10%,不代表全模块覆盖结论。执行选择、契约及迁移说明已同步
CONTRIBUTING.md。消费者实际使用的hsweb-commons-crud:5.0.2-SNAPSHOTSHA256 为562d31389a0235a209552989775b5f97ab6f193910eb157ea9c3feb6a9feaa20,179 个 class 与本次测试编译集一致。远端验证:HEAD
3bf1a764f66fd0b417345d0784f6d845ebde22d8的 Pull Request test 5.0.x / build(JDK17) 和 CLA 均通过。兼容边界:旧
save(Publisher)/save(E)覆写中的更新校验需迁移到正式 Modify/Save/Create 事件,不承诺透明调用旧 Save 覆写。同步部分 UPDATE 不扩展为结构修图入口;不自动修复历史持久数据。通用-1根支持不扩大 DynamicDimension/CommonTag 的领域父级规则。按用户决定不新增通用锁,普通树并发新增/删除仍有子树快照之外的新 child 风险。消费者本地使用 2.12.0-SNAPSHOT;该验证不替代 components/auth 当前 2.20 base 的合并验证。框架快照发布仍由维护者处理。