2017-06-29 63 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