gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:30:38 25 4
gpt4 key购买 nike

我从服务器得到如下所示的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com