1

プロジェクトにGoogleAppEngineを使用していますが、データベースに対していくつかのクエリを実行する必要があります。JDOQLを使用してデータベースに問い合わせます。私の場合、部分文字列「配列」を含む大学を取得したいと思います。大学の名前がサブストリングを含むものではなくアルファベット順に返されるため、クエリに誤りがあると思います。

Query query = pm.newQuery("SELECT FROM " + University.class.getName() + " WHERE name.contains("+array+") ORDER BY name RANGE 0, 5");

誰かが私のクエリの何が問題になっているのか教えてもらえますか?

ご協力ありがとうございました!

編集

大学の店舗のリストがあり、彼の名前で大学をリクエストできる提案ボックスがあります。そして、要求された名前をオートコンプリートしたいと思います。

4

2 に答える 2

1

AppEngineは全文検索をサポートしていません。問題217にスターを付ける必要があります。ただし、部分的な回避策は可能です。そしてあなたの場合、私はそれがぴったりだと思います。

まず、名前の小文字(または大文字)バージョンもあるようにモデルを調整します。これはlnameと呼ばれると仮定します。クエリで大文字と小文字を区別したい場合を除きます。

次に、次のようにクエリします。

Query query = pm.newQuery(University.class);
query.setFilter("lname >= startNameParam");
query.setFilter("lname < stopNameParam");
query.setOrdering("lname asc");
query.declareParameters("String startNameParam");
query.declareParameters("String stopNameParam");
query.setRange(0, 5);
List<University> results = (List<University>) query.execute(search_value, search_value + "z");
于 2010-10-03T16:34:03.730 に答える
0

これを行う正しい方法は次のようになります-

Query query = pm.newQuery(University.class,":p.contains(name)");
query.setOrdering("name asc");
query.setRange(0, 5);
List univs = q.execute(Arrays.asList(array)); 

(注-この場合、:p暗黙のパラメータ名であり、任意の名前に置き換えることができます)

于 2010-09-21T07:47:40.827 に答える