0
我在JPA 2.0中執行以下SQL,它檢索給定行的行號。從MySQL獲取給定行的行號通過JPA
SELECT
rownum
FROM
(SELECT
@rownum:[email protected]+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做些什麼。
在Hibernate中,我們可以通過設置一個標樣,'sessionFactory.getCurrentSession()。createSQLQuery獲得一個特定的類型(」 「)。addScalar(」rownum「,LongType.INSTANCE).setParameter(」id「,id).uniqueResult();'。這可以在JPA中完成嗎?我無法在JPA中找到像'public SQLQuery addScalar(String string,Type type)'這樣的方法。 – Tiny
[This](http://stackoverflow.com/a/6082296/1391249)是一個醜陋的解決方法(儘管我沒有嘗試)。 – Tiny