【问题标题】:Store list of One-To-Many relation Using ObjectBox?使用 ObjectBox 存储一对多关系列表?
【发布时间】:2020-02-11 18:23:26
【问题描述】:

我从服务器得到如下的 json:

  { "customers": [
    {
        "customer_name": "name1",
        "orders_list": [
            {
                "order_id": "1111111",
                "order_type": "a",
                "order_date": "11/02/2020 "
            },
            {
                "order_id": "1111112",
                "order_type": "b",
                "order_date": "11/02/2020 "
            },
            {
                "order_id": "1111113",
                "order_type": "c",
                "order_date": "11/02/2020 "
            }
        ]
    },
    //more customers
]

}

我使用 Retrofit 得到它并想用 Objectbox 存储它。

客户实体:

  @Entity
public class Customer {

    @Id long id;

    @SerializedName("customer_name")
    private String  customer_name;

    @SerializedName("array_of_matchs")
    @Transient
    public List<Order> orders_list;

    @Backlink
    public ToMany<Order> orders;

   //constructor , getters , setters ,...
}

订单实体:

公开课令{

    @Id
    public long id;

    @SerializedName("order_id")
    private int  order_id;

    @SerializedName("order_type")
    private String  order_type;

    @SerializedName("order_date")
    private String  order_date;

    public ToOne<Customer> customer;
  //constructor , getters , setters ,...
}

Gson 转换器返回一个 List 的 Customers 和他的所有订单。我尝试按如下方式存储客户:

  customersBox.put(list_of_customers_get_from_retrofit);

还有订单:

for (Customer each_customer : list_of_customers_get_from_retrofit ) {
      orderBox.put(each_customer.orders_list);
}

然后,当我选中带有 Data Browser 的框时,所有 customerToOneRelationIds 都设置为 0 。 这有什么问题?

在这种情况下,我们如何在customer 和他的Orders 列表之间建立关系? 如何正确存储订单?

【问题讨论】:

    标签: java android retrofit relation objectbox


    【解决方案1】:

    我必须手动设置目标:

     for (Customer each_customer : list_of_customers_get_from_retrofit ) {
         for (Order each_order : each_customer.orders_list ) {
           each_order.customer.setTarget(each_customer);
           orderBox.put(each_order);
         }
    }
    

    感谢repository(这对像我这样的任何 Objectbox 新手都很有用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-14
      • 2012-04-01
      • 1970-01-01
      • 2018-01-13
      • 2018-07-16
      • 2014-08-18
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多