Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JDBC结果集迁移到JPA列表对象_Java_Jpa_Jdbc - Fatal编程技术网

Java 将JDBC结果集迁移到JPA列表对象

Java 将JDBC结果集迁移到JPA列表对象,java,jpa,jdbc,Java,Jpa,Jdbc,您好,我需要将DAO的类从JDBC迁移到JPA,但我需要的是不需要更改rs.getInt(“NAME\u列”)或rs.getString(“NAME\u列”) 代码的其余部分PreparedStatement/而(rs.next()){..}很容易迁移。。。我只需要结果集变量 JDBC代码 PreparedStatement ps = connection.prepareStatement("SELECT f1, f2 FROM table"); ResultSet rs = ps.execut

您好,我需要将DAO的类从JDBC迁移到JPA,但我需要的是不需要更改
rs.getInt(“NAME\u列”)
rs.getString(“NAME\u列”)

代码的其余部分
PreparedStatement
/
而(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... 
}
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")
}          
JPA代码

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... 
}
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")
}          
EntityManager em=PersistenceUtil.getEntityManager();
Query q=em.createNativeQuery(“从表中选择f1、f2”);
List results=q.getResultList();
对于(对象[]rs:结果){
System.out.println(rs[0]);//需要是rs.getInt(“f1”)
System.out.println(rs[1]);//需要是rs.getString(“f2”)
}          
我在我的项目中有超过800个结果集

我需要一个方法/类/某些东西来只迁移结果集变量(在for内部),如果我在
rs[0]
中编写,我将花费大量的工作来重新编写JPA中的所有结果集。

以下是答案

    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


        }
EntityManager em=PersistenceUtil.getEntityManager();
Query q=em.createNativeQuery(“从表中选择f1、f2”);
q、 setHint(QueryHints.RESULT\u类型,ResultType.Map);
List lm=q.getResultList();
用于(地图rs:lm){
System.out.println(rs.get(“f1”);//添加一些函数转换为Int
System.out.println(rs.get(“f2”);//添加一些函数转换为字符串
}
有人知道转换字符串和Int的函数吗


例如:getInt或getString?

您有许多请求的表吗?或者您在实际查询中经常使用相同的表?如果您有很多这样的表,那么为什么还要使用JPA呢?此外,您在应用程序中使用JPA并不意味着您必须在任何地方都使用它?JPA的最大好处是,您可以抽象出数据库,将事物建模为实体,并让框架为您生成查询。如果您打算只编写本机查询,那么这似乎没有多大意义。我们的用例显然不是JPA最合适的选择,但是如果您没有选择,我已经为您提供了一种简化本机查询映射的方法。您是否可以切换ResultSet transformer以返回除“Object[]”之外的其他内容?Hibernate可以: