JPAを使用してGoogleAppEngineでエンティティをクエリすると、というフィールドjdoDetachedState
がオブジェクトに自動的に追加されます。JPAObjectLifecycleに何かがあると読みました。例えば:
{"id":216001,"m_Name":"x","jdoDetachedState":[{"key":216001,"targetClassName":"util.Profile","hashCode":1061531169,"keyAsObject":null},null,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[]]}
問題は、エンティティを(GSONを使用して)逆シリアル化し、getName()にアクセスした後、次のようになることです。
Caused by: java.lang.ClassCastException: java.util.ArrayList at util.Profile.jdoGetm_Name
jdoGetXは、私のオブジェクトに自動的に追加されるものの1つです。
私はそれを追加することによってなんとか修正しました:
@Transient
protected Object[] jdoDetachedState;
私のエンティティに設定し、nullに設定します。
私の質問は、状態のライフサイクルに目的がない場合に備えて、最初にDetachedStateをnullに設定してエンティティをクエリできるかどうかです。
私は試した:
EMF.get().createEntityManager().deatch(profile);
しかし、それはうまくいきませんでした。