0

私はJDOを初めて使っていますが、私はこれを使ってコードをポータブルにしています(現在私はAppEngineを使用しています)。次のGoogleトーク:http://dl.google.com/io/2009/pres/W_0415_Building_Scalable_Complex_App_Engines.pdfでは、Brett Slatkinが、子のキーを使用して親エンティティを取得するための新しい効率的なパターンを示しました[スライド23〜25]。彼の例では、Pythonのクラスの親子関係のマッピングはありませんでした。私はPythonの仕組みがわからないが、JDOで推測しているところで、親をどこかに指定する必要がある。したがって、次のコードのために、どのように私はメッセージに子としてMessageIndexをマッピングすることができますJDOで親子関係をマップするにはどうすればよいですか?各親には子リストがありますか?

// Message.java 
@PersistenceCapable 
public class Message { 
    @PrimaryKey 
    @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) 
    Long id; 

    @Persistent String sender; 
    @Persistent Text body; 
} 

// MessageIndex.java 
public class MessageIndex { 
    @PrimaryKey 
    @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) 
    Long id; 

    @Persistent List<String> receivers; 
} 

// Query.java - Query Example 
Query query = pm.newQuery("select id from MessageIndex" + 
          "where receivers == NameParam " + 
          "parameters String NameParam"); 
List<Key> indexes = (List<Key>) query.execute("Smith"); // List the child keys here 
List<Key> keys = new List<Key>; // A place to store parent keys 
for (Key k : indexes) 
{ 
    keys.add(k.getParent()); // Here, how would getParent() know who it's parent is? 
} 

List <Message> messages = new List <Message> 
for (Key k : keys) 
{ 
    messages.add(pm.getObjectById(Message.class, k)); 
} 

だから、どのように私は、この例では、メッセージとMessageIndex間の親子関係をマッピングすることができますか?私はPythonコードを正しく変換しましたか?

コメント/ご提案は大歓迎です!

P.S.ビデオのリンクはここにあります:http://www.google.com/events/io/2009/sessions/BuildingScalableComplexApps.html - >非常に興味深い!

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

答えて

0

気にしないでください。私はこれを行う別の方法を見つけた。メッセージを作成するたびに、同じキーでMessageIndexを作成します。このように、MessageIndexは、同じキーを共有しているため、常にMessageに関連付けられます。今、私は単にMessageIndexからgetKey()を呼び出すことができ、メッセージエンティティのgetObjectById()を使って対応するメッセージを取得することができます。もし誰かがこれより良い解決策を持っていたら、私はそれを感謝しますが、今のところ私はこの方法に行きます。とにかく、ありがとう。

関連する問題