OrmLite - 在添加或删除ForeignCollection时防止自动更改数据库

时间:2014-02-15 20:41:40

标签: ormlite foreign-collection

目前,我正在使用OrmLite,我有三个对象A,B和C. A包含一个ForeignCollection B,B包含一个ForeignCollection C.无论何时我向ForeignCollections添加一个元素,一个insert语句立即执行。删除元素时,会立即执行delete语句。

我想在没有执行语句的情况下添加/删除,直到我创建或更新A.这可能吗?

1 个答案:

答案 0 :(得分:1)

  

我想在没有执行语句的情况下添加/删除,直到我创建或更新A.这可能吗?

目前无法做到这一点。延迟加载的集合甚至不存储项目本身,因此无法在以后更改缓存的想法。

然而,你可以自己做这件事。您可以在实体中保留一个项目列表,然后覆盖dao.create(...)dao.update(...)方法,以便在您的特殊集合中有任何缓存项目时调用collection.addAll(...)

private List<Item> foreignItemsToAdd;
...
private void addForeignItem(Item item) {
   if (foreignItemsToAdd == null) {
       foreignItemsToAdd = new ArrayList<Item>();
   }
}

然后dao会有类似的东西:

@Override
public int create(ParentItem parent) throws SQLException {
    if (parent.getForeignItemsToAdd() != null) {
        parent.getForeignItems().addAll(parent.getForeignItemsToAdd());
    }
    return super.create(parent);
}