使用JBOSS5.1.0.GA里面的Hibernate 3.3.1.GA,在调用数据库里面的PKG时候发现下面的错误
检查发现是hibernate-core.jar里面有错误,使用反射取数据时候有问题
解决的版本就是升级hibernate-*.jar相关的包,当然能拿到org.hibernate.dialect.Oracle8iDialect源码自己修改然后打包也是可以的, 为了安全还是升级到3.3.2.GA就行
11:22:13,356 ERROR [STDERR] org.hibernate.HibernateException: Problem while trying to load or access OracleTypes.CURSOR value
at org.hibernate.dialect.Oracle8iDialect.registerResultSetOutParameter(Oracle8iDialect.java:399)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1586)
at org.hibernate.loader.Loader.doQuery(Loader.java:696)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2228)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1722)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175)
检查发现是hibernate-core.jar里面有错误,使用反射取数据时候有问题
try {
Class types = ReflectHelper.classForName("oracle.jdbc.driver.OracleTypes");
this.oracletypes_cursor_value = types.getField("CURSOR").getInt(types.newInstance());
} catch (Exception se) {
throw new HibernateException("Problem while trying to load or access OracleTypes.CURSOR value", se);
}
解决的版本就是升级hibernate-*.jar相关的包,当然能拿到org.hibernate.dialect.Oracle8iDialect源码自己修改然后打包也是可以的, 为了安全还是升级到3.3.2.GA就行
本文详细介绍了在使用JBOSS5.1.0.GA与Hibernate3.3.1.GA时遇到的问题,即在调用数据库PKG时出现错误,原因在于hibernate-core.jar中的Oracle类型加载问题。解决方案包括升级相关hibernate包以修复问题,或直接修改源码。文章最后推荐了安全且有效的升级至hibernate-3.3.2.GA版本的方法。
815

被折叠的 条评论
为什么被折叠?



