0

Google App Engine でパラメーター化されたクエリを使用せずに、JDOQL で日付クエリを実行することは可能ですか?

このような一般的なコードを作成しようとしています。ここで、基準は単なる文字列であり、何でも指定できるようにしたいと考えています。このコードでは、基になるデータについて多くを知る必要はありません。

Query query = pm.newQuery(tClass);
        if (criteria!=null) {
            query.setFilter(criteria);
        }

基準は「startdate = 'someproperlyformatteddatetime'」のようになります

ご提案いただきありがとうございます。

4

1 に答える 1

1

もちろん、GAE JDO クエリは JDOQL をサポートしています。次のような単純なことを行うことができます:q.setFilter("height <= 200")またはq.setFilter("name == 'Smith'")、プログラムで JDOQL フィルター文字列をアセンブルします。唯一の欠点は、文字列を一重引用符または二重引用符で囲む必要があるため、(Datastore に保存されている) パラメータの型を知る必要があることです。

クエリに対するすべての制限は引き続き適用されることに注意してください。

また、不等式演算子も使用する複数のプロパティに対してクエリを実行する場合は、事前に複合インデックスを定義する必要があります。

更新: JDOQL リテラル パラメータの指定は、文字列と数値で機能します。他のすべての値の型では、パラメーター置換を使用する必要があります。プログラムでそれを行うこともできます。

もう 1 つの回避策は、日付longの代わりに使用Dateし、日付を UNIX タイムスタンプ (long 型) に変換することです。

于 2013-01-09T14:12:21.400 に答える