【发布时间】:2012-08-16 14:29:39
【问题描述】:
是否可以编写如下 JPQL 查询:
select count(*) > 0 from Scenario scen where scen.name = :name
这将根据实体填充标准是否存在而返回真/假布尔值?
我想这样使用查询:
boolean exists = entityManager.createQuery(query,Boolean.class).setParameter("name",name).getSingleResult();
我的示例中的查询在语法上不正确(解析错误),但是是否有任何正确的方法可以像在 JPQL 中那样进行检查,返回布尔值,还是只能在 Java 代码中使用?
【问题讨论】:
-
SELECT NEW java.lang.Boolean(count(*) > 0)应该可以工作。也许你可以省略包声明,我现在没有机会尝试。 -
奇怪,但我收到以下错误:
org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [java.lang.Boolean] [select new java.lang.Boolean(count(*) > 0) from ... -
所以尝试确定这个查询返回什么——我的意思是尝试
Object exists = entityManager.createQuery(...,然后在调试模式下查看存在什么类型和值的对象