Google app engine 带有HashMap子字段的Google应用程序引擎JDO持久性

Google app engine 带有HashMap子字段的Google应用程序引擎JDO持久性,google-app-engine,persistence,entity-relationship,jdo,hashmap,Google App Engine,Persistence,Entity Relationship,Jdo,Hashmap,我有一个父类,我想在其中存储一个HashMap。但是,每次尝试修改该HashMap时,都会出现以下错误: PM org.datanucleus.store.appengine.MetaDataValidator checkForIllegalChildField 警告:无法验证一对多关系com.monsters.server.MonUser.monsters 知道那是怎么回事吗?代码如下: 这是父类的代码 @PersistenceCapable(identityType = IdentityTy

我有一个父类,我想在其中存储一个HashMap。但是,每次尝试修改该HashMap时,都会出现以下错误:

PM org.datanucleus.store.appengine.MetaDataValidator checkForIllegalChildField 警告:无法验证一对多关系com.monsters.server.MonUser.monsters

知道那是怎么回事吗?代码如下:

这是父类的代码

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true") 
public class MonUser {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;

    @Persistent(serialized="true", mappedBy = "owner")
    @Element(dependent = "true")
    private HashMap<String,Monster> monsters;

我在appengine页面上尝试了所有关于人际关系的内容,但似乎没有任何帮助。任何信息都会非常有用

另外,我已经让它与ArrayList等一起使用,但没有hashmaps、hashtables、maps等。如果这有帮助的话。

JDO只支持以下内容:

  • java.util.ArrayList
  • java.util.HashSet
  • java.util.LinkedHashSet
  • java.util.LinkedList
  • java.util.List
  • java.util.Set
  • java.util.SortedSet
  • java.util.Stack
  • java.util.TreeSet
  • java.util.Vector

您可以通过以下方式持久化哈希映射:

@Persistent(serialized=“true”,defaultFetchGroup=“true”)

要确保更改的持久性,您需要始终创建HashMap的新实例,请参见以下内容的末尾:

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
public class Monster {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;

    @Persistent
    private MonUser owner;