我正在为数据存储区使用 JDO 创建一个 Java GAE 应用程序。
我有这两个类用户和文件夹。
@PersistenceCapable
public class User {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private Folder rootFolder;
//getters and setters...
}
@PersistenceCapable
public class Folder {
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private List<Folder> subfolders;
//getters and setters...
}
我想检索一个给定ID (Long)的文件夹,所以我尝试这样做:
Key key = KeyFactory.createKey(Folder.class.getSimpleName(), 371);
folder = this.pm.getObjectById(Folder.class, key);
但这不起作用。它抛出这个异常:
org.datanucleus.exceptions.NucleusObjectNotFoundException:
Could not retrieve entity of kind Folder with key Folder(371)
我认为这是因为文件夹的密钥也包含其祖先的密钥,但我的问题是我无法知道给定其 ID 的文件夹的所有祖先路径。
我所知道的是路径中的第一个祖先,即拥有根文件夹的用户。我发现有一种Query.setAncestor(Key)
方法可能适合这里,但它只适用于查询,而不适用于“密钥查找”......
有人知道该怎么做吗?