【问题标题】:GreenDao & Triggers strange behaviourGreenDao & 触发奇怪的行为
【发布时间】:2015-06-19 16:53:10
【问题描述】:

我在我的 android 应用程序中使用 greendao,我需要使用触发器。触发器在插入一些信息后更新一个字段。

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, toString(), null) {
        @Override
        public void onCreate(SQLiteDatabase db) {
            super.onCreate(db);

            db.execSQL("CREATE TRIGGER tg1 AFTER INSERT ON table1 " +
                    "BEGIN " +
                    " update tabl1 set info='" + someInfo + "'" +
                    " where _id=New._id; " +
                    " END;");

            db.execSQL("CREATE TRIGGER tg2 AFTER UPDATE ON table1 " +
                    "BEGIN " +
                    " update table1 set info='" + someInfo+ "'" +
                    " where _id=New._id; " +
                    " END;");


        }
    };
    daoSession = new DaoMaster(helper.getWritableDatabase()).newSession();

触发器运行良好,当我直接查看表中包含的数据时,该字段包含更新的信息。我遇到的问题是,如果我从表中加载实体,有时我会在字段中收到数据,有时我会收到 null。

我想这个问题与会话 lyfecicle 有关,也许 greendao 不是总是从表中加载数据,而是使用已经在内存中的对象。我已经测试过,如果我使用 myDao.refresh(entity) 强制刷新实体,就会出现正确的值。

但是当我使用列表(原始查询或 loadAll 方法)时,我无法强制刷新实体。

有没有办法强制 green dao 从数据库中加载总是最新的信息?

提前致谢。

【问题讨论】:

    标签: android greendao


    【解决方案1】:

    尝试清理会话。

    daoSession.clear();
    

    【讨论】:

      猜你喜欢
      • 2012-06-29
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多