JPA: createNativeQuery.getSingleResult () возвращает объект, как я могу получить значение одного атрибута внутри этого объекта - PullRequest
5 голосов
/ 10 декабря 2010

У меня такой запрос

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?

EDIT
Вот ответ на то, что я ищу. Так что вместо этого

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

Сделай это

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

Так как я хочу узнать значение rank, я бы сделал это

Long rank = (Long) temp[0];

1 Ответ

1 голос
/ 10 декабря 2010

Метод createNativeQuery создает экземпляр Query. Вы должны вызвать getResultList () или getSingleResult () для объекта Query, чтобы фактически выполнить запрос.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...