4

次のように、JDO 構文を使用して複数のパラメーターを簡単に照会できます。

//specify the persistent entity you're querying and you filter usign params
query = pm.newQuery(MyClass.class, " customer == paramCustomer && date >= paramStartDate && date <=paramEndDate ");

// declare params used above
query.declareParameters("com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"); 

//pass the object declared as params
MyClassList = (List<MyClass>) query.execute(user, startDate, endDate);

フィルターを使用してプログラムで文字列を作成するのは簡単です。

"customer == paramCustomer && date >= paramStartDate && date <=paramEndDate"

params 宣言を含む別の文字列:

"com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"

即時ではないのは、どのパラメーターがフィルターに含まれているか (および宣言されているか) に応じてクエリを実行するための戦略を考え出すことです。クエリ実行の可能な順列 (すべてのパラメーター、最初のみ、2 番目のみ、1 番目と 2 番目など...):

MyClassList = (List<MyClass>) query.execute(user, startDate, endDate);

これは一般的なタスクであり、他の誰かがより一般的で効率的な方法でそれを行っていると確信しています。

なにか提案を?

4

1 に答える 1

5

メソッドで解決策を見つけましたquery.executeWithArray

このようにして、フィルターとパラメーター宣言を動的に作成し、実際のオブジェクトをオブジェクトの配列にロードして、上記のメソッドに渡すことができます。

もう 1 つの重要な方法はexecuteWithMap、パラメーターを名前でバインドするために使用できる方法です。

于 2009-06-10T21:19:24.763 に答える