当我使用 JPA 在 Google App Engine 中查询实体时,一个名为的字段jdoDetachedState
会自动添加到我的对象中。我读到它与 JPA 对象生命周期有关。例如:
{"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 是自动添加到我的对象中的另一件事。
我设法通过添加来修复它:
@Transient
protected Object[] jdoDetachedState;
到我的实体并将其设置为空。
我的问题是我是否可以首先查询将 Detached State 设置为 null 的实体,以防我在状态生命周期中没有任何目的。
我试过了:
EMF.get().createEntityManager().deatch(profile);
但它没有用。