0

目前,我正在使用 OrmLite,我有三个对象 A、B 和 C。A 包含 B 的 ForeignCollection,B 包含 C 的 ForeignCollection。每当我向 ForeignCollections 添加一个元素时,都会立即执行插入语句。每当我删除元素时,都会立即执行删除语句。

在创建或更新 A 之前,我想在不执行语句的情况下添加/删除。这可能吗?

4

1 回答 1

1

在创建或更新 A 之前,我想在不执行语句的情况下添加/删除。这可能吗?

目前没有办法做到这一点。延迟加载的集合本身甚至不存储项目,因此缓存更改以供以后使用的想法是不可能的。

但是,您可以自己执行此操作。您可以在实体中保留一个项目列表,然后如果您的特殊集合中有任何缓存项目,则覆盖dao.create(...)anddao.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);
}
于 2014-02-16T15:22:22.627 回答