JPA getResultList()为MySQL返回BigInteger,但为Microsoft SQL Server返回Integer

Joc*_*cht 9 java mysql sql-server jpa

我有以下方法:

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);
Run Code Online (Sandbox Code Playgroud)

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

List<BigInteger> counts = (List<BigInteger>) q.getResultList();
Run Code Online (Sandbox Code Playgroud)

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

List<Integer>
Run Code Online (Sandbox Code Playgroud)

知道为什么会有区别吗?

Jam*_*mes 22

JPA定义了JPQL查询的返回类型,但对于本机SQL查询,您可以获得数据库返回的任何内容.这与本机SQL查询有点关系.

将您的代码更改为Number,

List<Number> counts = (List<Number>) q.getResultList();
long count = counts.get(0).longValue();
Run Code Online (Sandbox Code Playgroud)