JPA:createNativeQuery.getSingleResult()返回一个对象,如何在该对象中获取一个属性的值

Tha*_*ham 5 java jpa

我有这样的查询

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;
Run Code Online (Sandbox Code Playgroud)

所以我EntityManager#createNativeQuery用来执行这个查询.

Object temp = em.createNativeQuery(sql).getSingleResult(); //sql is the above SQL query
Run Code Online (Sandbox Code Playgroud)

所以,现在的对象temp保存有关信息rank,idpoint.请注意,这rank不是我的实体内部的属性,rank是在查询执行时计算的 - >不能将此对象强制转换为我的实体.

那么我怎样才能获得价值rank

编辑
这是我正在寻找的答案.所以不要这样

Object temp = em.createNativeQuery(sql).getSingleResult();
Run Code Online (Sandbox Code Playgroud)

做这个

Object[] temp = (Object [])em.createNativeQuery(sql).getSingleResult();
Run Code Online (Sandbox Code Playgroud)

既然我想知道它的价值rank,那么我会这样做

Long rank = (Long) temp[0];
Run Code Online (Sandbox Code Playgroud)

K H*_*ein 1

createNativeQuery 方法创建一个 Query 实例。您必须在 Query 对象上调用 getResultList() 或 getSingleResult() 才能实际执行查询。

http://download.oracle.com/javaee/5/api/javax/persistence/Query.html