JDO を使用してデータベースにクエリを実行しています。エンティティ クラスは次のようになります。
class Entity
{
// other members of the class
List<String> stuff;
// members and methods
}
標準化されたインターフェースに対して Web サービスを作成しています。このインターフェイスを使用すると、ユーザーは一連のフィルターに基づいてエンティティ オブジェクトを検索できます。これらの 1 つは、可能なもののリストです。より明確にするために、ユーザーは文字列のリストを提供できます。これを stuffQuery と呼びます。ユーザーは、stuffQuery リストからの要素が少なくとも 1 つ含まれているスタッフ リストのすべての Entity オブジェクトを返すようにサービスに要求できます。JDO でこのクエリを記述する方法が見つかりません。実際には、stuff と stuffQuery の共通部分が空でないすべての Entity オブジェクトが返されます。
私の唯一の考えは、stuffQuery を基本的にループして、一連の stuff.contains(stuffQuery.get(idx)) フィルターを追加してフィルターを作成し、JDO クエリのフィルター文字列に結合することです。それは醜いです。私はそれが気に入りません。よりエレガントなソリューションがあれば、それを知っていただければ幸いです。
環境: Java、Spring Framework、Datanucleus