Android GreenDAO:实体与DAO上下文分离

Android GreenDAO:实体与DAO上下文分离,android,dao,greendao,Android,Dao,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;

我用绿刀。但是,抛出此异常:

"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;
}
有人知道绿岛什么时候叫它吗?还有,如何触发它来调用

谢谢。

我找到了解决办法

当您调用loadDeep和querydep时,greenDAO在内部调用_setDaoSession。调用这些方法后,将建立一对多或一对一关系。如果您只是使用SQLiteDatabase查询结果,那么您只需要获取数据,但关系并没有建立起来

具体来说,你可以这样做


谢谢。

要完成吴王的回答, 当你自己实例化你的对象时,这是同样的问题。 要解决这个问题,只需将daoSession设置为对象

Product product = new Product(null, 1L, categoryId, null);
product.__setDaoSession(MyApplication.getDaoSession());
然后你可以

product.getCategory()

显示更多您自己的代码,同时查看哪些代码描述了与您类似的问题如果您找到了问题的解决方案,请回答并接受您自己的问题,以便其他搜索此问题的用户可以在此处找到解决方案。您不应单独调用此方法。