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
所以现在objecttemp
保存有关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看起来很酷,谢谢你让我知道这一点