質問のタイトルに厳密に答えるには、次を使用しますSIZE。
Query query=em.createQuery("select m from Meeting m where size(m.attendees) = 0");
return query.getResultList();
JPA仕様から:
4.6.16.2算術関数
functions_returning_numerics::=
ABS(simple_arithmetic_expression) |
SQRT(simple_arithmetic_expression) |
MOD(simple_arithmetic_expression, simple_arithmetic_expression) |
SIZE(collection_valued_path_expression)
ABS関数は数値引数を取り、関数の引数と同じ型の数値(integer、float、またはdouble)を返します。
SQRT関数は数値引数を取り、doubleを返します。
MOD関数は2つの整数引数を取り、整数を返します。
SIZE関数は、コレクションの要素数である整数値を返します。コレクションが空の場合、SIZE関数はゼロと評価されます。
これらの関数の数値引数は、Javaオブジェクトの数値型およびプリミティブの数値型に対応している場合があります。
の特定のケースでは0、IS EMPTY
4.6.11空のコレクション比較式
empty_collection_comparison_expressionで比較演算子を使用するための構文IS EMPTYは
次の
とおりです。
collection_valued_path_expression IS [NOT] EMPTY
この式は、コレクション値のパス式で指定されたコレクションが空であるかどうか(つまり、要素がないかどうか)をテストします。
例:
SELECT o
FROM Order o
WHERE o.lineItems IS EMPTY
空のコレクション比較式のコレクション値パス式の値が不明な場合、空の比較式の値は不明です。
両方をテストして、どちらが最も効率的かを確認します(クエリプランを確認してください)。