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

ObjectBox 1:n 关联关系创建更新及原有关联保留问题咨询

结论

你当前贴出的代码无法实现「给已有客户新增订单」的需求,还会出现关联丢失的问题,核心原因是你没有从数据库读取已有客户的实例,直接创建了空的Customer对象操作。

  • 直接运行你给出的代码:你创建的是全新的Customer实例,没有绑定已有客户的ID,执行put时会作为新客户插入数据库,仅关联你新增的#3、#4订单,和原有的客户数据完全独立,原有客户和#1、#2的关联不会受影响,但完全没达到你给已有客户加订单的预期。
  • 如果你给这个新建的Customer手动赋值了已有客户的ID再执行put:ObjectBox会按你当前传入的orders列表全量覆盖该客户的关联关系,原有#1、#2和该客户的关联会直接丢失。

正确写法

要保留原有订单关联,必须先从数据库查询到对应客户的实例,此时实例的orders列表已经加载了历史关联的#1、#2,在这个基础上追加新订单再存储即可:

// existingCustomerId 为你要更新的已有客户的ID
Customer customer = store.box<Customer>().get(existingCustomerId)!;
// 追加新订单
customer.orders.add(Order()); // Order #3
customer.orders.add(Order()); // Order #4
// 提交更新
store.box<Customer>().put(customer);

这种操作下ObjectBox会增量更新关联关系,原有#1、#2的关联会完整保留,同时新增#3、#4和该客户的绑定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:27:02