我在我的安卓应用程序中使用绿道,我需要使用触发器。触发器在插入后更新字段,其中包含一些信息。
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。
我想这个问题与会话有关,也许 greendao 并不总是从表中加载数据,而是使用已经在内存中的对象。我已经测试过,如果我使用 myDao.refresh(entity) 强制刷新实体,则存在正确的值。
但是当我使用列表(原始查询或 loadAll 方法)时,我无法强制刷新实体。
有没有办法强制绿道从数据库中加载始终新鲜的信息?
提前谢谢。
尝试对会话进行切割。
daoSession.clear();