Прежде всего, вам не следует использовать конкатенацию строк, но позиционные параметры ( только перенос позиционных параметров может использоваться для собственных запросов ). Во-вторых, для собственного запроса, возвращающего скалярные значения, результатом будет 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 «Входные параметры»