我正在使用Hibernate 3.6和c3p0-0.9.2-pre1。我收到异常ORA-01000:在hibernate.cfg.xml中使用C3p0配置时,最大打开游标超出了错误。
我有一个Oracle的DatabaseSchema.conf文件,其中我有大约200个create table语句,同时验证了Oracle的数据库模式,我遇到了一个奇怪的场景:
我已经尝试过以下方法:
将值设置为' 0' hibernate.cfg.xml中的以下属性,以禁用C3p0的语句缓存 property name =" hibernate.c3p0.max_statements" property name =" hibernate.c3p0.maxStatementsPerConnection"
关闭SESSION后,CONNECTION,RESULTSET将它们分配为NULL。
SESSION:
if(session != null && session.isOpen()) {
session.close();
session = null; //assign null
}
RESULTSET :
if(rs != null) {
rs.close();
rs=null; //assign null
}
CONNECTION :
if(conn != null) {
conn.close();
conn=null; //assign null
}
在hibernate.cfg.xml中定义的C3P0配置中使用了各种排列和组合
Ex:随后增加numHelperThreads并观察OPEN_CURSOR计数,更改了池的最小和最大大小。以类似的方式,我也改变了其他配置。
在C3P0配置中使用了Connection Provider类,并导入了与Hibernate 3.6兼容的hibernate-c3p0 jar。
将Hibernate版本从3.6升级到5.2。
使用DBCP连接池机制代替C3P0。
1-6的方法导致高OPEN_CURSOR计数,而只有方法7导致期望的结果。
我还应该尝试使用C3P0?