2017-06-29 3 views
0

Ich mache eine Android-Anwendung mit GreenDao, und ich habe diese beiden Entitäten:GreenDao Liste Entität mit einer Liste von Entitäten

@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; 
} 

Ich versuche, um die Liste des Quiz mit dem folgenden Code zu holen:

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

Aber die Liste der Antworten kommt immer leer, was mache ich falsch?

+0

Sind Sie sicher, dass einige Quiz Entitäten in Ihrem db eingegeben haben? –

+0

Ja, mit diesem Code werden alle gespeicherten Quiz aufgelistet, aber die Liste der Antworten ist immer null. – danielvilha

+0

Können Sie Code Ihrer AndroidAdapter-Klasse hinzufügen? ... Vielleicht hast du ein Problem mit der Dao-Session. –

Antwort

0

Meine AndroidAdapter Klasse:

public class AndroidAdapter { 

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

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

Und AppApplication Klasse

@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

Versuchen Sie DAO-Sitzung direkt aus der AppApplication-Klasse zu bekommen (es sollte die Application-Klasse erweitern?) 'DaoSession daoSession = ((AppApplication) getApplicationContext()). GetDaoSession();' Dann versuchen, Quiz-Liste wieder zu bekommen –

+0

Ich habe geändert, aber bringen Sie das Quiz ohne die Liste der Antworten. – danielvilha

+0

@GiacomoLai Dieses Projekt, an dem ich arbeite, ist eine persönliche Anwendung. Nach dem letzten Gespräch habe ich es fallen gelassen und habe nicht mehr daran gearbeitet. Heute bin ich zurückgekommen, aber zuvor habe ich meine Maschine neu gestartet und das Projekt geputzt ... Und es hat normal geklappt ¬ ¬ es tut mir leid, dass ich dich belästigt habe und danke für die Hilfe. – danielvilha

Verwandte Themen