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 );