首页 文章

Spring Jdbc模板行映射器未在Object中设置所有值

提问于
浏览
0

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

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 回答

  • 0

    如果从数据库中检索那400行需要一些时间,我假设您正在达到数据库连接超时 . 如果是这样,如果您正在使用资源池,请增加 connectionTimeout . 调试代码时也可能发生超时 .

    也可能是数据库端的超时 . 在这种情况下,您将不得不调整数据库超时参数 .

相关问题