我正在JPA 2.0中执行以下SQL,它检索给定行的行号。
SELECT
rownum
FROM
(SELECT
@rownum:=@rownum+1 AS rownum,
tbl.zone_id
FROM
zone_table tbl,
(SELECT
@rownum:=0)t
ORDER BY
tbl.zone_id DESC)t
WHERE
zone_id=?
我在JPA中使用以下方法来执行此本机SQL查询。
Object object = entityManager.createNativeQuery("aboveQuery")
.setParameter("zone_id", id).getSingleResult();
object.toString()
返回
10.0
11.0
12.0
13.0
等基于提供的id
。因此,此值无法解析为java.lang.Long
。我希望它显示一个没有小数点的值。为什么此查询会产生此结果。它与MySQL而不是JPA更相关。
我正在使用MySQL 5.6.11
修改
我无法验证它在MySQL中返回的数据类型,因为它返回MySQL中没有小数点的结果(此处考虑的主键类型为BIGINT
)。
当我在PHP中尝试此查询时,它也生成了没有小数点的结果。所以,我可能认为它必须与JPA做点什么。
答案 0 :(得分:0)
最有可能返回BigDecimal,它是数据库NUMBER类型的标准类型。如果你想要一个Long,只需将它转换为Number并调用longValue()。
((Number)result).toLong()
如果由于某种原因它是一个字符串,那么只需使用,
new BigDecimal((String)result).toLong()