Как получить весь элемент из запроса JDBC - PullRequest
0 голосов
/ 28 сентября 2010

HI,

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

final Query contractQuery = cgnDao.getEntityManager().
            createNativeQuery("SELECT k.phrase, ak.type FROM key k INNER JOIN adkey ak USING (key_id) WHERE pck.pub_id =" + pid +" AND pck.c_id =" + campId );

Как я могу получить каждый элемент из запроса?

Где фраза является строкой, а тип enum

в Java

Спасибо

Ответы [ 3 ]

1 голос
/ 28 сентября 2010

См. эту ссылку в документации JBoss JPA и эту ссылку на java2s .

Короче говоря, у вас есть Query, для которого вы можете вызвать getResultList (), который возвращает List, который вы можете перебирать. Взгляните на JPA Javadoc .

Кроме того, я бы рекомендовал использовать PreparedStatements, что-то вроде

String sqlQuery = "select * from tbl_spaceship where owner = ?";
Query q = entityManager.createNativeQuery(sqlQuery, SpaceShip.class);
q.setParameter( 1, "Han" );
q.getResultList();

Преимущество заключается в том, что поставщик JPA позаботится о экранировании входных значений. Нет необходимости в этом конкретном случае, но хорошие привычки никогда не вредят.

1 голос
/ 29 сентября 2010

Прежде всего, вам не следует использовать конкатенацию строк, но позиционные параметры ( только перенос позиционных параметров может использоваться для собственных запросов ). Во-вторых, для собственного запроса, возвращающего скалярные значения, результатом будет List из Oject[]. Таким образом, результат может выглядеть следующим образом:

String sql = "SELECT k.phrase, ak.type " + 
             "FROM key k INNER JOIN adkey ak USING (key_id) " +
             "WHERE pck.pub_id = ?1 AND pck.c_id = ?2";
Query q = em.createNativeQuery(sql);
q.setParameter(1, pubId);
q.setParameter(2, cId);
List<Object[]> results = q.getResultList();

Ссылки

  • спецификация JPA 1.0
    • Раздел 3.6.3 «Именованные параметры»
    • Раздел 3.6.6 "SQL-запросы"
    • Раздел 4.6.4 «Входные параметры»
0 голосов
/ 28 сентября 2010

Вы можете использовать значение метода для получения экземпляров перечисления из набора результатов

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