Hibernate无法查找JNDI名称异常
请建议我所需的任何配置更改或欢迎任何建议Hibernate无法查找JNDI名称异常,hibernate,tomcat,nhibernate-mapping,tomcat6,hibernate-4.x,Hibernate,Tomcat,Nhibernate Mapping,Tomcat6,Hibernate 4.x,请建议我所需的任何配置更改或欢迎任何建议 当我使用hibernate 4.3.8和tomcat 6.0测试相同的代码时: 我用一个bean和一个表进行测试,得到如下无法查找JNDI名称的异常 发现以下异常:当我调试hibernate 4.3.8源代码时, 查找JNDI名称[java:comp/env/jdbc/db2] Throwable occurred: javax.servlet.ServletException: Unable to lookup JNDI name [java:com
当我使用hibernate 4.3.8和tomcat 6.0测试相同的代码时: 我用一个bean和一个表进行测试,得到如下无法查找JNDI名称的异常 发现以下异常:当我调试hibernate 4.3.8源代码时, 查找JNDI名称[java:comp/env/jdbc/db2]
Throwable occurred: javax.servlet.ServletException: Unable to lookup JNDI name [java:comp/env/jdbc/db2]
at com.application.Servlet.init(Servlet.java:109)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Apr 2, 2015 9:38:47 AM org.apache.coyote.http11.Http11Protocol start
我在谷歌上搜索了一下,发现它是Tomcat6.0的问题,在6.0.36版本中得到了修复。但发现以下异常:
当我用6.0.36测试hibernate 4.3.8时,得到了以下异常:
我用一个bean和一个表进行测试,得到了如下异常null指针
根本原因是方言获取空值(我已经调试了hibernate 4.3.8源代码)
调试上述错误时出现以下异常:
java.sql.SQLException: [IBM][JDBC Driver] CLI0626E getDatabaseMajorVersion is not supported in this version of DB2 JDBC 2.0 driver.
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throwNotSupportedByDB2(Unknown Source)
at COM.ibm.db2.jdbc.app.DB2DatabaseMetaData.getDatabaseMajorVersion(Unknown Source)
添加以下属性后,删除了上述异常:
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
因此,我们应该提到上述属性
以下链接帮助我确定了修复方案:
调试后,我发现以下错误,这是导致问题的原因:*[IBM][JDBC驱动程序]CLI0626E getDatabaseMajorVersion在此版本的DB2 JDBC 2.0驱动程序中不受支持**添加以下属性后,上述异常被删除:false final boolean useJdbcMetadata=ConfigurationHelper.getBoolean(“hibernate.temp.use\u jdbc\u metadata\u defaults”,configValues,true);
sessionFactory =new Configuration()
.configure("/hibernate.cfg.xml")
.setProperty("hibernate.show_sql", "true")).buildSessionFactory();
java.sql.SQLException: [IBM][JDBC Driver] CLI0626E getDatabaseMajorVersion is not supported in this version of DB2 JDBC 2.0 driver.
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throwNotSupportedByDB2(Unknown Source)
at COM.ibm.db2.jdbc.app.DB2DatabaseMetaData.getDatabaseMajorVersion(Unknown Source)
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
final boolean useJdbcMetadata = ConfigurationHelper.getBoolean( "hibernate.temp.use_jdbc_metadata_defaults", configValues, true );