1. 问题描述
采用 WebLogic + Hibernate + Spring + Oracle10.2, JAVA程序中向数据库查询某个表的记录, 报错:
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation; uncategorized SQLException for SQL []; SQL state [null]; error code [17026]; 数字溢出; nested exception is java.sql.SQLException: 数字溢出
java.sql.SQLException: 数字溢出
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
at oracle.jdbc.driver.NumberCommonAccessor.throwOverflow(NumberCommonAccessor.java:6797)
at oracle.jdbc.driver.NumberCommonAccessor.getLong(NumberCommonAccessor.java:499)
at oracle.jdbc.driver.OracleResultSetImpl.getLong(OracleResultSetImpl.java:521)
at weblogic.jdbc.wrapper.ResultSet_oracle_jdbc_driver_OracleResultSetImpl.getLong(Unknown Source)
at gov.mof.fasp.dic.dataset.dao.DataSetDAO.getHashMapListByRs(DataSetDAO.java:468)
at gov.mof.fasp.dic.dataset.dao.DataSetDAO$9.doInHibernate(DataSetDAO.java:755)
at org.springframework.orm.hibernate.HibernateTemplate.execute(HibernateTemplate.java:364)
at org.springframework.orm.hibernate.HibernateTemplate.execute(HibernateTemplate.java:333)
at gov.mof.fasp.dic.dataset.dao.DataSetDAO.loadByTable(DataSetDAO.java:748)
at gov.mof.fasp.dic.dataset.dao.DataSetDAO.findElementCodeMap(DataSetDAO.java:699)
2.问题原因
Weblogic 使用的jdbc驱动与数据库版本不匹配: 数据库采用的是Oracle10.2,Weblogic采用的Oracle驱动是10.1.
3.解决方法
将Weblogic所在目录/bin/weblogic81/server/lib/ojdbc14.jar 替换成10.2版本即可.
查看ojdbc版本本号的方法: 用rar打开ojdbc14.jar/META-INF/MANIFEST.MF文件.