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

时间:2010-12-09 23:54:14

标签: 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.createNativeQuery(sql).getSingleResult(); //sql is the above SQL query

现在,对象temp包含有关rankidpoint的信息。请注意,rank不是我的实体内的属性,rank是在查询执行时计算的 - >不能将此对象强制转换为我的实体。

那么如何获得rank的价值?

修改
以下是我要找的答案。所以不是这个

Object temp = em.createNativeQuery(sql).getSingleResult();

这样做

Object[] temp = (Object [])em.createNativeQuery(sql).getSingleResult();

因为我想知道rank的价值,所以我会这样做

Long rank = (Long) temp[0];

1 个答案:

答案 0 :(得分:1)

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

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