【问题标题】:OrmLite – Prevent automatic database changes when adding to or removing from a ForeignCollectionOrmLite - 在添加到 ForeignCollection 或从中删除时防止自动数据库更改
【发布时间】:2014-02-15 20:41:39
【问题描述】:

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

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

【问题讨论】:

    标签: ormlite foreign-collection


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2023-03-06
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多