В моем приложении у меня есть несколько постоянных моделей, и в одном случае я получаю исключение при попытке получить данные с помощью соответствующего геттера. Но в БД есть данные, и я понятия не имею, почему геттер ничего не возвращает. Класс ответа:
@DatabaseTable
@JsonRootName(value = "answer")
public class Answer {
public Answer() {}
@DatabaseField(generatedId = true, columnName = "_id")
@JsonIgnore
private Integer id;
@DatabaseField
@JsonProperty(value = "id")
private Integer answer_id;
@DatabaseField(dataType = DataType.LONG_STRING)
private String text;
// some other fields and setters/getters
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
Класс вопросов:
@DatabaseTable
public class Question extends BaseDaoEnabled implements Serializable {
private static final long serialVersionUID = -7587892134579897L;
public Question() {
}
@DatabaseField(foreign = true, foreignAutoRefresh = true)
private Answer answer;
}
Класс квеста:
@DatabaseTable(tableName = "quests")
@JsonRootName(value = "quest")
public class Quest {
@DatabaseField(allowGeneratedIdInsert = true, generatedId = true, columnName = "_id")
private Integer id;
@DatabaseField(dataType = DataType.DATE_STRING)
Date created_at;
@DatabaseField(foreign = true)
private Survey survey;
@ForeignCollectionField(eager = false, orderColumnName = "question_id")
public Collection<Question> questions;
Создание ответа:
answer.setText(input.getText().toString());
try {
if (answer.getId() == null) {
DBHelperFactory.GetHelper().getAnswersDao().create(answer);
question.setAnswer(answer);
DBHelperFactory.GetHelper().getQuestionsDao().update(question);
} else {
DBHelperFactory.GetHelper().getAnswersDao().update(answer);
}
Toast.makeText(this.getActivity(), "Answer saved", 5).show();
listener.nextQuestion();
} catch (SQLException e) {
Log.e(LOG_KEY, "Create failed", e);
}
И сбойный код (квест передается функции, работающей в фоновом режиме)
for (Question question : quest.questions) {
if (question.getAnswer() != null) {
Log.d(LOG_KEY, question.getId().toString());
Log.d(LOG_KEY, question.getAnswer().getId().toString());
Log.d(LOG_KEY, question.getAnswer().getText());
// NullPointerException for getText().
}
}
getAnswer()
действительно возвращает ответ. Данные в БД сохранились. Но getText()
терпит неудачу. Может ли кто-нибудь помочь мне выяснить, где я ошибаюсь?
quest
. Можете ли вы показать этот код? Также вам не нужно делатьupdate(...)
после создания. - person Gray   schedule 11.01.2013