3

我使用GreenDAO。但是,抛出这个异常:

"de.greenrobot.dao.DaoException: Entity is detached from DAO context".

在生成的代码中,我找到了这段代码。

/** called by internal mechanisms, do not call yourself. */
public void __setDaoSession(DaoSession daoSession) {
    this.daoSession = daoSession;
    myDao = daoSession != null ? daoSession.getPeerGroupDao() : null;
}

有人知道 GreenDAO 什么时候调用它吗?另外,如何触发它来调用。

谢谢。

4

2 回答 2

7

我找到解决方案。

当您调用 loadDeep 和 queryDeep 时,greenDAO 在内部调用 __setDaoSession。调用这些方法后,就建立了一对多或一对一的关系。如果你只是使用 SQLiteDatabase 来查询你的结果,你只是得到你的数据,但没有建立关系。

详细的可以去这个网站

谢谢。

于 2013-03-27T02:08:02.210 回答
0

要完成武王的回答,您自己实例化对象时也是同样的问题。要解决问题,只需将 daoSession 设置为对象

Product product = new Product(null, 1L, categoryId, null);
product.__setDaoSession(MyApplication.getDaoSession());

在你可以做之后

product.getCategory()
于 2016-12-16T09:10:25.197 回答