我在我的 GoogleAppEngine 托管应用程序中使用 Objectify 作为数据访问层。
当我尝试保留地图时,问题就来了。我的豆子看起来像这样:
@Entity
@Cached
class MyBean{
@Id
private Long id;
@Embedded
Map<String, String> parameters = new HashMap<String, String>();
public MyBean(){}
//getters and setters below
}
首先请注意,地图“参数”不是私有的,它引发了 JRE 异常。保存地图时一切顺利。从 DataStore 中检索它时失败。
我的解决方法是使用 @Serialized 注释。这只是一种解决方法,因为我想要实现的是使用 GAE Datastore 的expando功能。
根据objectify doc,我正在做正确的操作。
异常详情:
原因:com.googlecode.objectify.impl.load.EmbeddedMapSetter.safeSet(EmbeddedMapSetter.java:65) com.googlecode.objectify.impl.Transmog.loadSingleValue(Transmog.java:364) 的 java.lang.NullPointerException .googlecode.objectify.impl.load.CollisionDetectingSetter.set(CollisionDetectingSetter.java:37) 在 com.googlecode.objectify.impl.Transmog.loadSingleValue(Transmog.java:359) 在 com.googlecode.objectify.impl.Transmog.load (Transmog.java:340) 在 com.googlecode.objectify.impl.ConcreteEntityMetadata.toObject(ConcreteEntityMetadata.java:203) 在 com.googlecode.objectify.impl.QueryImpl$ToObjectIterator.translate(QueryImpl.java:668) 在 com。 googlecode.objectify.impl.QueryImpl$ToObjectIterator.translate(QueryImpl.java:657) 在 com.googlecode.objectify.util.TranslatingIterator.next(TranslatingIterator.爪哇:35)