将JDBC ResultSet迁移到JPA List对象

时间:2017-02-10 13:15:28

标签: java jpa jdbc

您好我需要将我的DAO的类从JDBC迁移到JPA,但我需要的是不需要更改rs.getInt("NAME_COLUMN") OR rs.getString("NAME_COLUMN")

其余代码PreparedStatement / while(rs.next()){....}很容易迁移...我只需要结果集变量...

JDBC代码

PreparedStatement ps = connection.prepareStatement("SELECT f1, f2 FROM table");
ResultSet rs = ps.executeQuery();
while (rs.next()) {

    System.out.println(rs.getInt("f1"));
    System.out.println(rs.getString("f2"));
    // More than 800 of this... 
}

JPA CODE

EntityManager em = PersistenceUtil.getEntityManager();

Query q = em.createNativeQuery("SELECT f1, f2 FROM table");
List<Object[]> results = q.getResultList();

for (Object[] rs : results) {
     System.out.println(rs[0]); // need to be rs.getInt("f1")
     System.out.println(rs[1]); // need to be rs.getString("f2")
}          

我的项目中有很多ResultSet超过800

我需要一个方法/类/东西来只迁移结果集变量(里面的),如果我写入rs[0]我将花费大量的工作来重写JPA中的所有结果集。

1 个答案:

答案 0 :(得分:1)

这是答案

    EntityManager em = PersistenceUtil.getEntityManager();

    Query q  = em.createNativeQuery("SELECT f1, f2 FROM table");
    q.setHint(QueryHints.RESULT_TYPE, ResultType.Map);
    List<Map> lm = q.getResultList();

        for (Map rs : lm) {

            System.out.println(rs.get("f1")); // add some function convert to Int
            System.out.println(rs.get("f2")); // add some function convert to string


        }

任何人都知道转换字符串和Int的任何函数吗?

喜欢:getInt或getString?