当我尝试使用两个实体之间的多对多关系创建数据库方案时,我想提交一个关于通过 SQLite 进行序列化的问题:
- 命令
- 产品
- OrderBill(订单 - 产品)
我想将 Order 和 Product 与 OrderBill 联系起来:
- OrderBill 保留 Order 的 id、Product 的 id、订购的数量。
- 例如,订单只保留一个名称
- 产品有名字和价格
我为 Order、Product 和 OrderBill 创建了我的 Pojos。但是对于具有 as 属性的 OrderBill:
- 长 id_order_bill
- 订单订单
- 产品产品
但我坚持使用这些实体。这样做,我需要保留三个列表:
- 列表
<OrderBill>
- 列表
<Order>
- 列表
<Product>
如果我想获取订单的产品列表,我只需要检索所有List<OrderBill>
具有Order = order
.
但我需要维护这些信息:
public class DataStore {
private List<Order> myOrders;
private List<Product> myProducts;
private List<OrderBill> myOrderBills;
public void add_product(Order o, Product p, int quantity) {
myOrderBills.add(new OrderBill(o,p,quantity));
}
在我的DAO
我喜欢这样:
public OrderBill insert(OrderBill o) {
ContentValues values = new ContentValues();
values.put(COL_NAME_ID_ORDER, o.getOrder().getId());
values.put(COL_NAME_ID_PRODUCT, o.getProduct().getId());
values.put(COL_NAME_QUANTITY, o.getQuantity());
long id = db.insert(TABLE_ORDER_BILL, null, values);
o.setId_order_bill(id);
return o;
}
使用DAO
模式,我正在将OrderBill
对象的 Product 和 Order 转换为 id_product 和 id_order,我做得对吗?我没有测试,但我想知道这是否是在数据库和我的应用程序中保持多对多关系的好方法?
因为在我的应用程序中,我希望允许多个订单与多个产品相关联,但不能复制多个等效产品。
你看到另一种处理方式吗?