4

このSQLと同等のRQLクエリを作成しようとしています:

select * from some_table t where t.property in (1, 2, 3, 4 ...)

ただし、RQL がこれをサポートしているかどうかはわかりません。Oracle ドキュメントには、リポジトリ アイテムの ID プロパティでこれを行う方法の例があります。

ID IN { "0002421", "0002219", "0003244" ... }

しかし、この例の ID をクエリ対象のプロパティに変更しようとすると、RQL ParseException が発生します。

これが可能かどうか誰にもわかりますか?

4

3 に答える 3

2

これは querybuilder api を介して可能です (以下の例を参照)。ただし、これがプレーンな RQL で利用できない理由はわかりません。

QueryExpression thePropertyExpression =     
   theQueryBuilder.createPropertyQueryExpression("postalCode");

String [] zipcodeArray = {"22185", "22183"};

QueryExpression theValueExpression = 
    theQueryBuilder.createConstantQueryExpression(zipcodeArray);

Query theQuery = 
    theQueryBuilder.createIncludesQuery(theValueExpression, thePropertyExpression);
于 2014-08-27T11:48:43.623 に答える
0

ATG ドキュメントから、RQL Grammar には特定の比較クエリが含まれているID INため、別のプロパティに変更IDすると適切に解析されないため、ParseException.

Grammar ドキュメントをさらに下に見ると、ComparisonOperator. 特に興味深いのはINCLUDES ANY.

その使用例(ドキュメントから)

興味には、{ "サイクリング"、"水泳" } が含まれます

これは次と同等です。

(興味には「サイクリング」が含まれます) OR (興味には「水泳」が含まれます)

したがって、スカラー プロパティを検索している限り、これは機能する可能性があります。

したがって、最終的なオプションが残ります。おそらく回避しようとしているのは、大きな条件を作成することです。これは、とにかくステートメントORを構築するためにループを通過する必要があるため、私が通常行う方法です。 IN.

于 2013-12-09T13:10:59.770 に答える
-1

radimpe からの回答は正しく、oracle ドキュメントからの回答です。要件に対して INCLUDES ANY クエリを実行できます。文字列に対して機能します。たとえば。Alex または Brian の名を持つユーザーを検索する場合は、RQL で記述できます。

firstName INCLUDES ANY {"Alex","Brian"}

リンクはこちら: http://docs.oracle.com/cd/E24152_01/Platform.10-1/ATGRepositoryGuide/html/s0305multivaluedpropertyqueries01.html

于 2013-12-20T12:41:29.940 に答える