JavaのGoogle App Engineのデータストア:Pythonの場合と同様に、JDOのクエリフィルタで利用できる 'IN' と演算子、?

StackOverflow https://stackoverflow.com/questions/1448677

  •  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クエリの結果は、全体的な結果として、バックマージされます。

Googleの提供、ソースコードの一部として、この機能を持っている間違いなく便利だが、

、何の付加価値は、この利便性を超えて、本当にありません、特にちょうどあなた自身のコードでそれをやって何のパフォーマンス上の利点の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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top