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例外をスローしていたことに注意してください。マップを保存すると、すべてがうまくいきます。データストアから取得すると失敗します。
私の回避策は、@Serializedアノテーションを使用することです。私が達成したいのはGAEデータストアのエキスパンド機能を使用することなので、これは単なる回避策です。
objectify docによると、私は正しい操作を行っています。
例外の詳細:
原因:com.googlecode.objectify.impl.Transmog.loadSingleValue(Transmog.java:364)のjava.lang.NullPointerException(com.googlecode.objectify.impl.load.EmbeddedMapSetter.safeSet(EmbeddedMapSetter.java:65)) .googlecode.objectify.impl.load.CollisionDetectingSetter.set(CollisionDetectingSetter.java:37)at com.googlecode.objectify.impl.Transmog.loadSingleValue(Transmog.java:359)at com.googlecode.objectify.impl.Transmog.load (Transmog.java:340)at com.googlecode.objectify.impl.ConcreteEntityMetadata.toObject(ConcreteEntityMetadata.java:203)at com.googlecode.objectify.impl.QueryImpl $ ToObjectIterator.translate(QueryImpl.java:668)atcom。 googlecode.objectify.impl.QueryImpl $ ToObjectIterator.translate(QueryImpl.java:657)at com.googlecode.objectify.util.TranslatingIterator.next(TranslatingIterator。java:35)