データストアにJDOを使用してJavaGAEアプリを作成しています。
私はこれらの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)
、これはクエリ専用であり、「キールックアップ」用ではありません...
誰かがこれを行う方法を知っていますか?