Android上的ORMLite:尝试从对象读取数据时获取NullPointerException

Android上的ORMLite:尝试从对象读取数据时获取NullPointerException,android,ormlite,Android,Ormlite,在我的应用程序中,我有几个持久化模型,在一个例子中,我在尝试使用相应的getter获取数据时遇到异常。但是THADB中有数据,我不知道为什么getter什么也不返回。 答案类别: @DatabaseTable @JsonRootName(value = "answer") public class Answer { public Answer() {} @DatabaseField(generatedId = true, columnName = "_id")

在我的应用程序中,我有几个持久化模型,在一个例子中,我在尝试使用相应的getter获取数据时遇到异常。但是THADB中有数据,我不知道为什么getter什么也不返回。 答案类别:

@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;
以及失败的代码(quest被传递到后台运行的函数中)

getAnswer()
确实返回答案。数据库中的数据保持不变。但是
getText()
失败了。
有人能帮我找出我错在哪里吗?

关键是
@DatabaseField(dataType=dataType.LONG\u STRING)
工作异常,我无法使它工作。切换回
VARCHAR
后,问题出现了。

你在哪里设置答案的文本?哦,我明白了,你确定答案是.setText(input.getText().toString());获取是否正确执行?是的,因为当我从设备(仿真器)端转储数据库时,查看它到底包含什么,我可以看到添加的数据。如何查询
quest
。你能展示一下代码吗?另外,在创建添加的任务代码之后,您不需要执行
更新(…)
。Quest实例被传递给函数。为什么在将引用设置为应答后不需要更新?数据类型可能会有一些问题吗?
  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().
    }
}