2011-08-07 3 views
0

Peristance Managerを使用して、子プロパティと親キーを知っている子オブジェクトを取得するにはどうすればよいですか?Appengine JDO、子プロパティと親キーを知っている子オブジェクトを取得するにはどうすればよいですか?

public class User { 

@PrimaryKey 
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
private Key id; 

@Persistent(mappedBy = "user") 
@Element(dependent = "true") 
private List<Section> sections; 
... 

を、子は次のように定義されています:

親は次のように定義されている「ユーザ」のIDと 'セクションのタイトルを知る

public class Section { 

@PrimaryKey 
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
private Long id; 

@Persistent 
private User user; 

@Persistent 
private String title; 
... 

、私はどのように取得することができますセクション?。私は次のようなものを使ってセクションを取得するためのクエリを作成しようとしていました: 'where title == xxx and user.id¿? == xxx 'しかし、私はユーザーIDを指定する方法がわかりません。永続性マネージャからのクエリやメソッドを使用してそれを行う方法はありますか?

ありがとうございました。

答えて

1

私は最終的に、この方法でそれを作った:

public static Section getSectionByTitle(String title, Key user_key){ 
    PersistenceManager pm = PMF.get().getPersistenceManager(); 
    Query query = pm.newQuery("select from "+Section.class.getName()+" WHERE title == s && user == keyParam"); 
    query.declareParameters("String s, String k"); 
    query.setUnique(true); 
    Section section = (Section) query.execute(title, user_key.getId()); 
    return section; 
} 
0

クエリオブジェクトに対してこのメ​​ソッドを呼び出すことができます。

q.setAncestor(ancestorKey)。

詳細についてはthis pageをお読みください(祖先クエリ)。

私は 'ANCESTOR ='の構文のようなものを見たことがありますが、今はその参照が見つかりません。

+3

おかげで、しかしsetAncestor方法は、低レベルのデータストアAPIのために働く、私はJDOのクエリを使用しようとしていました。 – pablobart

関連する問題