I have two class:
public class Questionnaire {
@DatabaseField(generatedId=true, useGetSet=true)
private Long id;
@DatabaseField
private int type;
@DatabaseField
private String title;
@DatabaseField
private String description;
@ForeignCollectionField(eager = true)
private Collection<Question> questions;
// Get and Set omitted
and
public class Question {
@DatabaseField(generatedId=true, useGetSet=true)
private Long id;
@DatabaseField
private int type;
@DatabaseField
private String description;
@DatabaseField(foreign = true, foreignAutoRefresh= true)
private Questionnaire questionario;
//get and set ommited
When I save a Questionnaire with a List of Questions. The objects are persisted, but I lose the relationship.
I save in this way:
ForeignCollection<Question> questions =
getDao(Questionnaire.class).getEmptyForeignCollection("questions");
for(Question question : DataUtil.getAllQuestions()) {
questions.add(question);
}
Questionnaire questionnarie = new Questionnaire();
questionnarie.setQuestions(questions);
questionnarie.setTitle("Normal");
questionnarie.setDescription("Questionário normal");
getDao(Questionnaire.class).createOrUpdate(questionarie);
When I retrieved this register from database, a Question data doesn’t have a reference for Questionnaire, and my Questionnaire doesn’t have question list filled.
Any help will be appreciated.
The problem is that you are not setting the
questionariofield on yourQuestionobjects. The relationship is from theQuestionto the associatedQuestionnaire. There is nothing in theQuestionnairetable that points the other way. See the documentation on foreign objects.I would recommend doing something like the following: