1

我在 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 有关系。

4

1 回答 1

0

它很可能返回一个 BigDecimal,它是数据库 NUMBER 类型的标准类型。如果您想要一个 Long,只需将其转换为 Number 并调用 longValue()。

((Number)result).toLong()

如果由于某种原因它是一个字符串,那么只需使用,

new BigDecimal((String)result).toLong()
于 2013-07-09T13:19:35.380 回答