You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart使用Objectbox时ToMany<E>关联更新抛出404错误如何解决

问题原因及解决方案

根因分析

  1. 双向关联重复操作冲突:你定义的Edge.relNodes带有@Backlink()注解,属于反向关联字段,完全由ObjectBox通过正向关联Node.relEdges自动维护,不能手动修改。你目前的代码同时修改了正向的Node.relEdges和反向的Edge.relNodes,导致ObjectBox处理关联变更时,重复执行同一个关联的删除/新增操作,底层找不到对应关联条目就抛出404错误。
  2. 旧版本bug:你使用的objectbox 1.0.0是早期正式版本,存在ToMany关联操作状态同步的已知bug,清空后重新添加关联时如果存在未同步的脏数据,会触发native层校验失败。

修复方案

  • 删掉所有修改反向关联的代码:删除edgeDao.dart中操作relNodes的逻辑,所有关联变更只操作正向的Node.relEdges字段即可,反向关联会在正向实体put后自动同步。
  • 调整更新逻辑:修改完节点的关联列表后,仅需put修改过的Node实体即可,不需要重复put对应的Edge实体,避免重复提交关联变更触发冲突。
  • 旧版本兼容操作:如果暂时不升级依赖,修改ToMany前先同步状态到数据库,示例代码:
// nodeDao.dart更新逻辑调整
element.relEdges.applyToDb();
element.relEdges.clear();
element.relEdges.addAll(edges);
_box.put(element);
  • 升级依赖版本:将objectbox依赖升级到1.4.0及以上稳定版,该版本已修复你遇到的ToMany操作404原生错误问题。

内容的提问来源于stack exchange,提问作者Luka Badzaghua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:54:00