我有这样的查询
SET @rownum := 0;
SELECT rank, id, point FROM
(
SELECT @rownum := @rownum + 1 AS rank, id, point FROM user ORDER BY point DESC
) AS result
WHERE id = 0;
所以我使用EntityManager#createNativeQuery来执行这个查询.
Object temp = em.createNativeQuery(sql).getSingleResult(); //sql is the above SQL query
所以现在对象临时保存有关rank,id和point的信息.请注意,排名不是我的实体内的属性,排名是在查询执行时计算的 – >不能将此对象强制转换为我的实体.
那么如何才能获得排名的价值呢?
编辑
这是我正在寻找的答案.所以不要这样
Object temp = em.createNativeQuery(sql).getSingleResult();
做这个
Object[] temp = (Object [])em.createNativeQuery(sql).getSingleResult();
既然我想知道等级的价值,那么我会这样做
Long rank = (Long) temp[0];