2017-06-29 74 views
0

我正在使用GreenDao一個Android應用程序,我有這兩個實體的名單:GreenDao名單實體的實體

@Entity 
public class Quiz { 

    @Id(autoincrement = true) 
    private Long id; 

    private Date date; 

    private String type; 

    @ToMany(referencedJoinProperty = "quizId") 
    private List<Answer> answers; 
} 

@Entity 
public class Answer { 

    @Id(autoincrement = true) 
    private Long id; 

    private int answer; 

    private float value; 

    private int questionNumber; 

    private String type; 

    private Long quizId; 
} 

我嘗試使用下面的代碼來獲取測驗列表:

DaoSession daoSession = AndroidAdapter.getDaoSession(); 
QuizDao quizDao = daoSession.getQuizDao(); 
List<Quiz> quizs = quizDao.loadAll(); 

但答案列表總是空的,我做錯了什麼?

+0

你肯定在你的數據庫已經進入了一些測驗實體? –

+0

是的,使用此代碼列出所有已保存的測驗,但答案列表始終爲空。 – danielvilha

+0

你可以把你的AndroidAdapter類的一些代碼? ...也許你有一些問題得到dao會話。 –

回答

0

我AndroidAdapter類:

public class AndroidAdapter { 

    public static Context getContext() { 
     return AppApplication.getContext(); 
    } 

    public static DaoSession getDaoSession() { 
     return AppApplication.getDaoSession(); 
    } 
} 

而且AppApplication類

@Override 
public void onCreate() { 
    super.onCreate(); 

    context = this; 

    DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,ENCRYPTED ? "exam-db-encrypted" : "exam-db"); 
    Database db = ENCRYPTED ? helper.getEncryptedWritableDb("exam-secret") : helper.getWritableDb(); 
    daoSession = new DaoMaster(db).newSession(); 

    this.addAllEvents(); 
} 

public static DaoSession getDaoSession() { 
    return daoSession; 
} 
+1

嘗試直接從AppApplication類獲得dao會話(它應該擴展Application類的權利?) 'DaoSession daoSession =((AppApplication)getApplicationContext())。getDaoSession();' 然後嘗試再次獲取Quiz列表 –

+0

改變了,但繼續帶來測驗沒有答案的列表。 – danielvilha

+0

@GiacomoLai我正在開發的這個項目是一個個人應用程序。在我們最後一次談話後,我放棄了它,並且不再工作。今天我回來了,但之前,我重新啓動了我的機器並清理了該項目......而且它正常工作,抱歉讓您感到困擾並感謝您的幫助。 – danielvilha