创建和更新 ObjectBox 1:n 关系
creating and updating an ObjectBox 1:n relationship
我对 documentation 有点困惑。让我们继续讨论客户订单关系,其中一个客户可以有 n 个订单。
如果我为现有客户创建新订单并将其存储在
Customer customer = Customer();
customer.orders.add(Order()); // Order #3
customer.orders.add(Order()); // Order #4
// Puts customer and orders:
final customerId = store.box<Customer>().put(customer);
我希望这会更新客户(覆盖所有数据),因为我正在使用客户的 ID。我猜,新订单 #3 和 #4 被创建为新订单并 linked 给客户,因为他们的订单 ID 是 0。但是我之前存储的订单发生了什么(#1 & # 2)?他们是否仍 linked 给我的客户?还是这个 link 也被覆盖并丢失了?
照原样,您的代码示例将创建一个新客户。要更新现有客户及其关系,首先从商店中获取现有客户(或重新使用之前放置的客户实例)。
Customer customer = store.box<Customer>().get(customerId);
customer.orders.add(Order()); // Order #3
customer.orders.add(Order()); // Order #4
store.box<Customer>().put(customer);
documentation 还展示了如何从 ToMany 关系中获取和删除对象。
我对 documentation 有点困惑。让我们继续讨论客户订单关系,其中一个客户可以有 n 个订单。
如果我为现有客户创建新订单并将其存储在
Customer customer = Customer();
customer.orders.add(Order()); // Order #3
customer.orders.add(Order()); // Order #4
// Puts customer and orders:
final customerId = store.box<Customer>().put(customer);
我希望这会更新客户(覆盖所有数据),因为我正在使用客户的 ID。我猜,新订单 #3 和 #4 被创建为新订单并 linked 给客户,因为他们的订单 ID 是 0。但是我之前存储的订单发生了什么(#1 & # 2)?他们是否仍 linked 给我的客户?还是这个 link 也被覆盖并丢失了?
照原样,您的代码示例将创建一个新客户。要更新现有客户及其关系,首先从商店中获取现有客户(或重新使用之前放置的客户实例)。
Customer customer = store.box<Customer>().get(customerId);
customer.orders.add(Order()); // Order #3
customer.orders.add(Order()); // Order #4
store.box<Customer>().put(customer);
documentation 还展示了如何从 ToMany 关系中获取和删除对象。