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