【发布时间】:2009-09-30 21:01:34
【问题描述】:
我正在使用带有 Java 的 Goole 应用程序引擎数据存储,并尝试加载带有枚举列表的对象。每次我加载对象时,列表都是空的。对象是
@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://localhost:8080/_ah/admin 查看数据存储区中的数据,并且可以看到我的列表已保存,但加载对象时它不存在。
据我所知,我使用 Eclipse 插件创建了我的项目,并且没有对数据存储设置进行任何更改。那么为什么我的枚举列表为空呢?
【问题讨论】:
-
您能显示将列表分配给 anEnumList 的代码吗?
-
对象中的其他字段是否保存正确?
-
我已更新问题以显示枚举列表的创建。我还没有在此处添加的其他值也正在保存并正在设置主键。
-
我稍微改变了我的问题,因为我现在可以看到数据已保存但未加载
标签: java google-app-engine jdo