如何从JDBC查询中获取所有元素

时间:2010-09-28 18:33:14

标签: java sql orm jpa

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中的

由于

3 个答案:

答案 0 :(得分:1)

同时查看this link on the JBoss JPA docsthis 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();

参考

  • JPA 1.0规范
    • 第3.6.3节“命名参数”
    • 第3.6.6节“SQL查询”
    • 第4.6.4节“输入参数”

答案 2 :(得分:0)

您可以使用method的值从结果集

获取枚举实例
enum A {}
A.valueOf()