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

Java JPA:createNativeQuery.getSingleResult()返回一个对象,如何获取该对象中一个属性的值,java,jpa,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; 所以我使用EntityManager#createNativeQuery来执行这个查询 Object temp = em.create

我有一个这样的问题

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
所以现在object
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];

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


ohhh我的错,真正的代码都是getSingleResult()。我要问的是如何从我的结果对象获取属性。您必须将临时对象强制转换为实体对象类型,然后从实体对象调用getter方法。您可以使用@SqlResultSetMapping注释来映射标量结果。这就是你要找的吗?我明白了。非常感谢你。我把我的答案贴在上面。顺便说一句@SqlResultSetMapping看起来很酷,谢谢你让我知道这一点