jpa 返回布尔值的JPQL语句

m4pnthwp  于 2022-11-14  发布在  其他
关注(0)|答案(4)|浏览(207)

是否可以像下面这样编写JPQL查询:
select count(*) > 0 from Scenario scen where scen.name = :name
根据实体填充条件是否存在返回真/假布尔值的代码?
我想这样使用查询:

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

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

rfbsl7qr

rfbsl7qr1#

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

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

mzmfm0qo2#

刚才怎么样:

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

qq24tv8q3#

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

kmb7vmvb

kmb7vmvb4#

我成功地:

@Query(nativeQuery = true, value = "select if(count(name) > 0, 'true', 'false') from Scenario scene where scene.name = :name")
Boolean nameExists(@Param("name") String name);

注意:我正在使用MySQL和MariaDB

相关问题