Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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
SpringJDBC模板-java.sql.SQLRecoverableException:Closed语句:next_Java_Spring_Spring Boot_Spring Data Jpa_Spring Data - Fatal编程技术网

SpringJDBC模板-java.sql.SQLRecoverableException:Closed语句:next

SpringJDBC模板-java.sql.SQLRecoverableException:Closed语句:next,java,spring,spring-boot,spring-data-jpa,spring-data,Java,Spring,Spring Boot,Spring Data Jpa,Spring Data,我试图使用JDBCTemplate执行select查询,并使用结果集设置对象值。 但是当我调用jobResults.next()时,我得到一个错误,说连接已关闭。但我不会关闭任何连接,因为Spring会管理这些连接。你能帮我一下吗 private JdbcTemplate jdbcTemplate; public CfPersistenceUtil(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSou

我试图使用JDBCTemplate执行select查询,并使用结果集设置对象值。 但是当我调用jobResults.next()时,我得到一个错误,说连接已关闭。但我不会关闭任何连接,因为Spring会管理这些连接。你能帮我一下吗

private JdbcTemplate jdbcTemplate;

public CfPersistenceUtil(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
}


public  Vector getItems(CvPrintJob job, CfBatchPrintConfiguration config, String groupId) throws Exception {    

    ResultSet jobResults = jdbcTemplate.execute(JOB_QUERY_GROUPID, new PreparedStatementCallback<ResultSet>() {  
         @Override
         public ResultSet doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {  
             ps.setString(1,job.getPaperColor());
             ps.setString(2,job.getPaperSize());
             ps.setString(3,job.getDeliveryMethod());
             ps.setInt(4,job.getPlex());
             ps.setString(5,groupId);                                                                         
             return ps.executeQuery();  
         }  
     });  

     while(jobResults.next()) {
         CvPrintJobItem item = new CvPrintJobItem();
         item.setAuthorID((jobResults.getBigDecimal("AUTHOR_ID")).toString());
 
     }

}

无法从DoInPrepared语句返回结果集。您必须返回一个域对象。您可以将while next循环移动到回调中,也可以使用其他更方便的方法,例如

您不能从doInPreparedStatement返回结果集。您必须返回一个域对象。您可以将while next循环移动到回调中,也可以使用其他更方便的方法,如

Hi Deadron,谢谢您的建议。我试图返回一个域对象,但得到了如下编译错误。返回类型与PreparedStatementCallback.doInPreparedStatement(PreparedStatement)不兼容。它只允许返回结果集,不允许返回其他内容。你能告诉我我做错了什么吗?你需要更新成为域对象类型。对不起,我不明白,如果可能的话,你能分享一个例子吗,new PreparedStatement Callback谢谢你的解决方案!!!我现在明白问题了:)嗨,戴德龙,谢谢你的建议。我试图返回一个域对象,但得到了如下编译错误。返回类型与PreparedStatementCallback.doInPreparedStatement(PreparedStatement)不兼容。它只允许返回结果集,不允许返回其他内容。你能告诉我我做错了什么吗?你需要更新成为域对象类型。对不起,我不明白,如果可能的话,你能分享一个例子吗,new PreparedStatement Callback谢谢你的解决方案!!!我现在看到了问题:)我想在调用“while(jobResults.next())”之前没有执行ps.executeQuery()。我看不出您在哪里设置预处理语句查询SQL,您不需要设置吗?我认为在调用“while(jobResults.next())”之前没有执行ps.executeQuery()。我看不出您在哪里设置预处理语句查询SQL,您不需要设置它吗?
2020-06-23 20:37:37.060  WARN 26800 --- [           main] com.zaxxer.hikari.pool.ProxyConnection   : HikariPool-1 - Connection oracle.jdbc.driver.T4CConnection@21ae6e73 marked as broken because of SQLSTATE(08003), ErrorCode(17009)
java.sql.SQLRecoverableException: Closed Statement: next
    at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:247) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
    at com.zaxxer.hikari.pool.HikariProxyResultSet.next(HikariProxyResultSet.java) [HikariCP-3.4.2.jar:na]
    at com.acn.abp.printbatch.util.CfPersistenceUtil.getItems(CfPersistenceUtil.java:76) [classes/:na]
    at com.acn.abp.printbatch.util.CfBatchPrintUtil.getJobs(CfBatchPrintUtil.java:222) [classes/:na]
    at com.acn.abp.printbatch.tasklet.ProcessSimplex.execute(ProcessSimplex.java:76) [classes/:na]
java.sql.SQLRecoverableException: Closed Statement: next
    at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:247)
    at com.zaxxer.hikari.pool.HikariProxyResultSet.next(HikariProxyResultSet.java)
    at com.acn.abp.printbatch.util.CfPersistenceUtil.getItems(CfPersistenceUtil.java:76)
    at com.acn.abp.printbatch.util.CfBatchPrintUtil.getJobs(CfBatchPrintUtil.java:222)