我正在创建一个Java GAE应用程序,使用JDO作为数据存储。
我有这2个类User和Folder。
@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)
方法,可能适合这里,但它只适用于查询,而不是 "键查找"......
有谁知道如何做到这一点?