我有这样的查询
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
现在,对象temp
包含有关rank
,id
和point
的信息。请注意,rank
不是我的实体内的属性,rank
是在查询执行时计算的 - >不能将此对象强制转换为我的实体。
那么如何获得rank
的价值?
修改
以下是我要找的答案。所以不是这个
Object temp = em.createNativeQuery(sql).getSingleResult();
这样做
Object[] temp = (Object [])em.createNativeQuery(sql).getSingleResult();
因为我想知道rank
的价值,所以我会这样做
Long rank = (Long) temp[0];
答案 0 :(得分:1)
createNativeQuery方法创建一个Query实例。您必须在Query对象上调用getResultList()或getSingleResult()才能实际执行查询。
http://download.oracle.com/javaee/5/api/javax/persistence/Query.html