2013-03-25 28 views
2

我使用GreenDAO。但是,拋出此異常:GreenDAO:實體從DAO上下文中分離

"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打電話給它嗎?另外,如何觸發它來調用。

謝謝。

+0

顯示一些自己的代碼,也看到https://groups.google.com/論壇/#!msg/greendao/WW_pLJvwa3E/diFqMePh2pAJ其中描述了與您的 – 2013-03-25 10:09:48

+0

Thx類似的問題。我發現靈魂 – 2013-03-26 01:23:26

+1

如果您發現問題的解決方案,請回答並接受您自己的問題,以便其他用戶可以在此找到解決方案。 – 2013-03-26 10:31:17

回答

7

我找到解決辦法。

當你調用loadDeep和queryDeep時,greenDAO在內部調用__setDaoSession。調用這些方法後,建立起一對多或一對一的關係。如果你只是使用SQLiteDatabase來查詢結果,你只需要獲取你的數據,但是這種關係並沒有建立起來。

詳細,你可以去這個site

感謝。

1

要完成吳王的回答, 當你自己實例化你的對象時,這也是一個問題。 爲了解決probleme中庸之道的daoSession設置到對象

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

和之後,你可以做

product.getCategory() 
相關問題