web-dev-qa-db-ja.com

JPQLクエリ---使用方法 'is null'

jPQLで次のクエリを使用して、住所列が空の人にクエリを実行します。

List rl = em.createQuery( "select o from Person as o where o.address IS NULL")。setFirstResult(0).setMaxResults(50).getResultList(); .. ..

このコード行は常に空のリストを返します。明らかに、テーブルには条件に一致するエントリがあります。

クラスPerson {アドレスアドレス;文字列名; ...}クラスアドレス{文字列名; ...}

このjpqlステートメントの何が問題になっているのか誰か知っていますか?前もって感謝します。

13
Mike

前述のように、アドレス列が空の場合は、IS NULLの代わりにIS EMPTY式を使用してみてください。

em.createQuery( "SELECT o FROM Person o where (o.address.id IS NULL OR o.address.id = 0").setMaxResults(50).getResultList();

Idのデータ型に従って制約を確認してください。

また、setFirstResult(0)は結果をスキップせず、それがないと、デフォルトで一致するすべての結果がフェッチされるため、言及する必要はありません。

21
Nayan Wadekar