我使用与Java的古尔App Engine数据存储,并试图用枚举的列表加载的对象。我每次加载对象的列表为空。对象是

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class ObjectToSave {

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent
    private List<AnEnum> anEnumList;

    //public getters and setters
}

在枚举是简单

public enum AnEnum {
    VALUE_1,
    VALUE_2;
}

保存它的代码是

ObjectToSave objectToSave = new ObjectToSave();
List<AnEnum> anEnumList = new ArrayList<AnEnum>();
anEnumList.add(AnEnum.VALUE_1);
objectToSave.setAnEnumList(anEnumList);
PersistenceManager pm = pmfInstance.getPersistenceManager();
try {
    pm.makePersistent(objectToSave);
} finally {
    pm.close();
}

加载它的代码是

PersistenceManager pm = pmfInstance.getPersistenceManager();
try {
    Key key = KeyFactory.createKey(ObjectToSave.class.getSimpleName(), id);
    ObjectToSave objectToSave = pm.getObjectById(ObjectToSave.class, key);
} finally {
    pm.close();
}

我可以使用查看数据存储中的数据 HTTP://本地主机:8080 / _ah /管理并且能看到我的名单已储存,但它是当对象被加载不存在。

我创建了项目与Eclipse插件,并没有因为据我所知作出了数据存储的设置进行任何更改。那么,为什么我的ID列表枚举空?

有帮助吗?

解决方案

是的,但你的列表字段是不是在默认装货所以因此不加载获取群组。 阅读 JDO取组。你可以将它添加到DFG,或启用自定义关闭PM之前获取群组,或只是“触摸”的领域。

- 安迪( DataNucleus将

其他提示

你是如何创建ObjectToSave的实例?所有实例变量引用类型的默认值是零,因此,除非你有(附加的)代码来创建List<AnEnum>的一个实例,并将它指定anEnumList,空将预期。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top