GreenDao & 触发奇怪的行为

GreenDao & Triggers strange behaviour

我在我的 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();

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

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

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

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

提前致谢。

尝试清除会话。

daoSession.clear();