java - 使用 ObjectBox 存储一对多关系列表?

标签 java android retrofit relation objectbox

我从服务器得到如下所示的 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 转换器返回包含所有订单的客户列表。我尝试按如下方式存储客户:

  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 选中复选框时,所有 customerToOneRelationId 设置为 0 。 这有什么问题吗?

在这种情况下,我们如何在客户与其订单列表之间建立关系? 如何正确存储订单?

最佳答案

我必须手动设置目标:

 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 新手很有用)。

关于java - 使用 ObjectBox 存储一对多关系列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60175193/

相关文章:

android - Listview过滤器adapter.getFilter().filter(按多个值)

android - RXJava + 改造。每 n 秒重复一次请求

java - 迭代 Collection,避免在循环中删除对象时出现 ConcurrentModificationException

java - 使用 Robolectric,如何测试沿 POST *请求* 发送的 JSON 值

java - "android-support-v4"多个库冲突

java - Android 应用程序无法看到通过 JSP 创建的数据存储实体

android - Retrofit Beginner 关于 POJO 的

android - 改造 SOAP 响应 simpleframework 元素 'Body' 没有

java - Mac 10.8 上的 Eclipse - 安装了 1.7.0 JRE/JDK,但 Eclipse 无法启动

java - 使用 lambda 和流表达代码块的简洁方法