JavaのGoogle App Engineのデータストア:Pythonの場合と同様に、JDOのクエリフィルタで利用できる 'IN' と演算子、?
-
11-09-2019 - |
質問
このページは、 'IN' と演算子の説明しますだけではなく、単一の値、可能なマッチのリストに対してフィールドを比較するために、GAEデータストアに使用することができます:
しかしこれは、Pythonのためです。ジャワ(App Engineの1.2.5)では、しようとします。
query.setFilter("someField IN param");
私のjavax.jdo.queryにJDOUserException「式の部分が解析できませんでした:PARAMで」発射します。
これを行うことができる方法はありますか?
解決
IN
のPythonのバージョンは、実際に(それがオープンソースのApp Engine SDKの一部ですので、あなたが調べることができます)アプリケーションレベルのコードで実装されています。基本的に、あなたは(IN
とNクエリになりよう==
でクエリをN == LEN(PARAM))及びそれらのNクエリの結果は、全体的な結果として、バックマージされます。
、何の付加価値は、この利便性を超えて、本当にありません、特にちょうどあなた自身のコードでそれをやって何のパフォーマンス上の利点のWRTはありません。だから、私はこのマイナーな微調整は、(少なくとも今のところ)は、Javaのバージョンに追加されなかったことに驚いていないよ...
他のヒント
IN演算子を使用するには、私はこれを使用します:
List<Site> query(List<String> searchTerms)
{
javax.jdo.Query q = pm.newQuery(Site.class);
q.setFilter("param.contains(siteField)");
q.declareParameters("java.util.Collection param");
return (List<Site>)q.execute(searchTerms);
}
所属していません StackOverflow