2017-02-09 49 views
0

我正在使用spring jdbc模板从oracle数据库中检索400条记录。 之后,我使用行映射器将行转换为对象。对象中的某些值没有任何值。当我在pl/sql编辑器中测试相同的sql时,我能够看到行的所有行和所有列。当我调试应用程序时,我得到错误。如果我为相同的查询获取更少数量的记录(7),它工作正常.Row映射器正在设置对象的所有值。你能帮我解决这个问题吗?Spring Jdbc模板行映射器未设置对象中的所有值

java.sql.SQLException: statement handle not executed 

2017-02-09 15:45:39 INFO XmlBeanDefinitionReader:317 - Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml] 
2017-02-09 15:45:39 INFO SQLErrorCodesFactory:126 - SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana] 
2017-02-09 15:45:39 WARN SQLErrorCodesFactory:227 - Error while extracting database product name - falling back to empty error codes 
org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is java.sql.SQLException: Connection has already been closed. 
    at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:305) 
    at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:329) 
    at org.springframework.jdbc.support.SQLErrorCodesFactory.getErrorCodes(SQLErrorCodesFactory.java:214) 
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:134) 
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.<init>(SQLErrorCodeSQLExceptionTranslator.java:97) 
    at org.springframework.jdbc.support.JdbcAccessor.getExceptionTranslator(JdbcAccessor.java:99) 
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:645) 
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:680) 
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:707) 
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:757) 
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:192) 
+1

关于连接已关闭的嵌套SQLException提示代码或可能的配置问题。请更新与不工作的代码。 –

回答

0

如果从数据库中检索的400行需要一定的时间,我想你打DB连接超时。如果是这样,如果您正在使用资源池,请增加connectionTimeout。您也在调试代码时发生超时。

也可能是超时在数据库端。在这种情况下,您必须调整数据库超时参数。