2

尝试从我的 POJO 中读取外部集合时出现此错误

AndroidRuntime(589): Caused by: java.lang.IllegalStateException: Internal DAO
    object is null.  Lazy collections cannot be used if they have been deserialized.

有问题的集合是answers1我标记为“渴望”的集合

@ForeignCollectionField (eager=true)
private ForeignCollection<TextAnswer> answers1;

为什么当我调试下面的方法时

public List<TextAnswer> getAnswers() {      
    return new ArrayList<TextAnswer>(answers1);
}

它告诉我该集合是一个 LazyForeignCollection?我很困惑。

在我使用 ForeignCollections 的任何其他课程中,我都没有这个问题:(

4

1 回答 1

2

如果已经反序列化,则不能使用惰性集合。

有趣的问题。首先,该消息LazyForeignCollection课堂上。answer1该字段是否有可能曾经是惰性的并被序列化?是否涉及序列化?除非对象已被序列化,否则a 中的dao字段ForeignCollection永远不应存在。null

我现在的假设是您正在反序列化该类的先前版本。如果不是这种情况,那么我不知道。

于 2012-11-05T16:15:51.450 回答