2013-03-25 2 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/ forum/#! msg/greendao/WW_pLJvwa3E/diFqMePh2pAJ, который описывает аналогичную проблему для ваших –

+0

Thx. Я нахожу soultion –

+1

Если вы нашли решение на свой вопрос, ответьте и соглашайтесь на свой вопрос, чтобы другие пользователи, которые искали эту проблему, могли найти решение здесь. –

ответ

7

Я нахожу решение.

GreenDAO вызывает __setDaoSession внутренне, когда вы вызываете loadDeep и queryDeep. После вызова этого метода создается отношение «один к многим» или «один к одному». Если вы просто используете SQLiteDatabase для запроса своего результата, вы просто получаете свои данные, но отношения не создаются.

подробно, вы можете пойти по этому site

Спасибо.

1

Для завершения ответа короля У, Это та же проблема, когда вы сами создаете объект. Для решения Probleme Жюст установить daoSession к объекту

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

и после того, как вы можете сделать

product.getCategory() 
Смежные вопросы