46

是否可以编写如下 JPQL 查询:

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

这将根据实体填充标准是否存在返回真/假布尔值?

我想以这种方式使用查询:

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

我的示例中的查询在语法上不正确(解析错误),但是有没有像 JPQL 中那样进行检查的正确方法,它会返回布尔值,或者它只能在 Java 代码中实现?

4

3 回答 3

80

是的,可以通过以下方式:

select case when (count(scen) > 0)  then true else false end  
from Scenario scen where scen.name = :name
于 2012-08-21T09:55:28.850 回答
17

只是:

select count(scen) > 0
from Scenario scen where scen.name = :name
于 2015-05-22T09:23:19.907 回答
1

我遇到了同样的问题,然后我将休眠更新为 4.3.11.Final,现在它可以工作了。

于 2015-08-27T15:28:08.200 回答