web-dev-qa-db-ja.com

ブール値を返すJPQLステートメント

次のようなJPQLクエリを書くことは可能ですか?

select count(*) > 0 from Scenario scen where scen.name = :name

エンティティ充填条件が存在するかどうかに応じてtrue/falseブール値を返しますか?

このクエリを次のように使用したいと思います。

boolean exists = entityManager.createQuery(query,Boolean.class).setParameter("name",name).getSingleResult();

私の例のクエリは構文的に正しくありません(解析エラー)が、ブール値を返すJPQLのようなチェックを行う正しい方法はありますか、それともJavaコードでのみ可能ですか?

33
Piotr Sobczyk

はい、次の方法で可能です。

select case when (count(scen) > 0)  then true else false end  
from Scenario scen where scen.name = :name
52
Mikko Maunu

どうですか:

select count(scen) > 0
from Scenario scen where scen.name = :name
12
Stefan Haberl

私は同じ問題を抱えていたので、休止状態を4.3.11.Finalに更新しましたが、現在は機能しています。

1
Error