到目前为止,我一直在使用 Objectify,但现在我必须使用 JDO 处理一些代码。我在使用 Objectify 很容易的基本东西上遇到问题,特别是:如果一个对象有一个 List 或一个数组作为成员,我不能让它持久化。
我有一个包含 FileInfo 列表的类 FileInfoBatch(代码缩进在这里丢失,不知道为什么):
@PersistenceCapable
public class FileInfoBatch implements Serializable{
private static final long serialVersionUID = 1L;
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private List<FileInfo> fileInfoList;
@Persistent
private String savedByUserEmail;
public FileInfoBatch(){
fileInfoList=new ArrayList<FileInfo>();
}
然后我向我的 RPC impl 类发送一个仅包含 1 个 FileInfo 的 FileInfoBatch(称为 fib)到我的 RPC impl 类并保存它,然后立即查询它以进行测试(在调试器中)
PersistenceManager pm = PMF.get().getPersistenceManager();
pm.makePersistent(fib);
Query query = pm.newQuery(FileInfoBatch.class, "savedByUserEmail == '"+ userEmail + "'");
List<FileInfoBatch> savedList = (List<FileInfoBatch>) query.execute();
FileInfoBatch persisted=savedList.get(0);
持久化的 FileInfoBatch 返回一个空的 FileInfo 列表。如果我使用单个 Fileinfo 成员,这仍然存在。
我发现此站点上没有报告此类基本问题,并且我查看了文档: https ://developers.google.com/appengine/docs/java/datastore/jdo/dataclasses
如此简单的存储任务是否需要巨大的复杂性?如果是这样,我将回到使用 Objectify。