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 );
如何从查询中获取每个元素?
其中,短语是字符串,类型是枚举
Java中的
由于
答案 0 :(得分:1)
同时查看this link on the JBoss JPA docs和this link on 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 :(得分:1)
首先,您不应使用字符串连接,而应使用位置参数(仅限位置参数绑定可以移植用于本机查询)。其次,对于返回标量值的本机查询,结果将是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();
答案 2 :(得分:0)
您可以使用method的值从结果集
获取枚举实例enum A {}
A.valueOf()