对于计数查询,EntityManager.getSingleResult()返回什么?
所以..。foo的确切运行时类型是什么?
Object foo = em.createQuery("SELECT COUNT(t) FROM com.company.Thing t WHERE prop = :param")
.setParameter("param", value).getSingleResult();发布于 2010-08-26 19:38:04
COUNT(t)专门返回java.lang.Long。当它在这个上下文中单独出现时,它会按原样返回。
(在其他上下文中,COUNT生成的Long可能是包装的,但不是今天。)
发布于 2010-08-26 19:01:14
根据JPA specification,COUNT返回一个长整型:
4.8.4 SELECT子句中的聚合函数查询结果
可以是应用于路径表达式的聚合函数的结果。
可以在查询的SELECT子句中使用以下聚合函数: AVG、COUNT、MAX、MIN、SUM。
对于除COUNT之外的所有聚合函数,作为聚合函数的参数的路径表达式必须在状态字段中终止。COUNT的路径表达式参数可以在状态字段或关联字段中终止,或者COUNT的参数可以是标识变量。
函数SUM和AVG的参数必须是数字。函数MAX和MIN的参数必须对应于可排序的状态字段类型(即数字类型、字符串类型、字符类型或日期类型)。
使用聚合函数的查询结果中包含的Java类型如下:
如果使用SUM、AVG、MAX或MIN,并且没有可应用聚合函数的值,则聚合函数的结果为NULL。
如果使用了COUNT,并且没有可以应用COUNT的值,则聚合函数的结果为0。
聚合函数的参数前面可以有关键字DISTINCT,以指定在应用聚合函数之前要消除重复的值。
无论是否指定了关键字DISTINCT,都会在应用聚合函数之前消除NULL值。
发布于 2016-07-27 22:13:05
本机查询可以根据数据库驱动程序返回计数的不同对象;但是,所有这些对象都扩展了实现longValue()方法的java.lang.Number。
https://stackoverflow.com/questions/3574029
复制相似问题