首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JPA EntityManager.getSingleResult()对于计数查询返回什么?

JPA EntityManager.getSingleResult()对于计数查询返回什么?
EN

Stack Overflow用户
提问于 2010-08-26 18:04:27
回答 8查看 50.2K关注 0票数 35

对于计数查询,EntityManager.getSingleResult()返回什么?

所以..。foo的确切运行时类型是什么?

代码语言:javascript
复制
Object foo = em.createQuery("SELECT COUNT(t) FROM com.company.Thing t WHERE prop = :param")
       .setParameter("param", value).getSingleResult();
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-08-26 19:38:04

COUNT(t)专门返回java.lang.Long。当它在这个上下文中单独出现时,它会按原样返回。

(在其他上下文中,COUNT生成的Long可能是包装的,但不是今天。)

票数 2
EN

Stack Overflow用户

发布于 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类型如下:

  • COUNT返回Long.
  • MAX,MIN返回它们所应用到的状态字段的类型。
  • AVG返回Double。
  • SUM在应用于整型类型(不包括BigInteger )的状态字段时返回Long;在应用于浮点类型的状态字段时返回Double;在应用于BigInteger类型的状态字段时返回BigInteger;在应用于BigDecimal类型的状态字段时返回BigDecimal。

如果使用SUM、AVG、MAX或MIN,并且没有可应用聚合函数的值,则聚合函数的结果为NULL。

如果使用了COUNT,并且没有可以应用COUNT的值,则聚合函数的结果为0。

聚合函数的参数前面可以有关键字DISTINCT,以指定在应用聚合函数之前要消除重复的值。

无论是否指定了关键字DISTINCT,都会在应用聚合函数之前消除NULL值。

票数 48
EN

Stack Overflow用户

发布于 2016-07-27 22:13:05

本机查询可以根据数据库驱动程序返回计数的不同对象;但是,所有这些对象都扩展了实现longValue()方法的java.lang.Number。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3574029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档