9

我有以下方法:

Query q = getEntityManager().createNativeQuery("SELECT COUNT(1) FROM table1 WHERE column = :column_id " + "UNION " + "SELECT COUNT(1) FROM table2 WHERE column = :column_id");
q.setParameter("column_id", column_id);

当我想获取计数列表(将是 2 行)时,我执行此操作:

List<BigInteger> counts = (List<BigInteger>) q.getResultList();

这在 MySQL 中运行良好。但是一旦我连接到 MS SQL 服务器,我就会得到一个整数对象列表:

List<Integer>

知道为什么会有区别吗?

4

2 回答 2

23

JPA 定义了 JPQL 查询的返回类型,但对于本机 SQL 查询,您可以获得数据库返回的任何内容。这就是原生 SQL 查询的重点。

将您的代码更改为数字,

List<Number> counts = (List<Number>) q.getResultList();
long count = counts.get(0).longValue();
于 2012-05-31T13:17:44.007 回答
0

它是在服务器端定义的

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count

“返回 SELECT 语句检索的行中 expr 的非 NULL 值的计数。结果是 BIGINT 值。”

http://msdn.microsoft.com/en-us/library/aa258232%28v=sql.80%29

“返回类型

诠释”

于 2012-05-31T09:01:43.550 回答