Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring hibernate:通过tomcat jndi的数据源_Java_Spring_Hibernate_Tomcat_Jndi - Fatal编程技术网

Java Spring hibernate:通过tomcat jndi的数据源

Java Spring hibernate:通过tomcat jndi的数据源,java,spring,hibernate,tomcat,jndi,Java,Spring,Hibernate,Tomcat,Jndi,看起来这个问题很老,但我找不到正确的解决办法 详情: web.xml <resource-ref> <res-ref-name>jdbc/jndisqldbhello</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

看起来这个问题很老,但我找不到正确的解决办法

详情:

web.xml

    <resource-ref>
    <res-ref-name>jdbc/jndisqldbhello</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
它开始时没有例外,但我相信我会得到它们。 如果我将persistence.xml添加到

<property name="hibernate.hbm2ddl.auto" value="update"/>

我有个例外:

    2011-04-08 20:50:17,160 - INFO Version - HV000001: Hibernate Validator 4.3.0.Final
2011-04-08 20:50:18,221 - INFO SchemaUpdate - HHH000228: Running hbm2ddl schema update
2011-04-08 20:50:18,222 - INFO SchemaUpdate - HHH000102: Fetching database metadata
2011-04-08 20:50:18,227 -ERROR SchemaUpdate - HHH000319: Could not get database metadata
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70)
    at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194)
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:492)
    ....
2011-04-08 20:50:18,238 -ERROR SchemaUpdate - HHH000299: Could not complete schema update
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70)
    at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
2011-04-08 20:50:17160-信息版本-HV000001:Hibernate验证程序4.3.0.Final
2011-04-08 20:50:18221-信息模式更新-HH000228:运行hbm2ddl模式更新
2011-04-08 20:50:18222-信息模式更新-HH000102:获取数据库元数据
2011-04-08 20:50:18227-错误模式更新-HH000319:无法获取数据库元数据
org.apache.tomcat.dbcp.dbcp.SQLNestedException:无法为连接URL“null”创建类“”的JDBC驱动程序
位于org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
位于org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
位于org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
位于org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70)
位于org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
位于org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194)
位于org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178)
位于org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:492)
....
2011-04-08 20:50:18238-错误模式更新-HH000299:无法完成模式更新
org.apache.tomcat.dbcp.dbcp.SQLNestedException:无法为连接URL“null”创建类“”的JDBC驱动程序
位于org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
位于org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
位于org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
位于org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70)
位于org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)

有谁能帮我弄明白该怎么修吗?

看来解决方案是最合适的

第一次我不清楚(不起作用),因为

我发现,如果我在persistence.xml中使用,一般的问题就解决了

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
    </properties>
</persistence-unit>
</persistence>
java://comp/env/jdbc/myDatabase
范例

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>java://comp/env/jdbc/jndisqldbhello</non-jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.connection.datasource" value="java://comp/env/jdbc/jndisqldbhello"/>
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
    </properties>
</persistence-unit>
</persistence>

org.hibernate.ejb.HibernatePersistence
java://comp/env/jdbc/jndisqldbhello
但是如果我加上属性

<property name="hibernate.hbm2ddl.auto" value="create"/>

它不起作用

如果有任何建议,请通知我,谢谢

java://comp/env/jdbc/myDatabase
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>java://comp/env/jdbc/jndisqldbhello</non-jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.connection.datasource" value="java://comp/env/jdbc/jndisqldbhello"/>
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
    </properties>
</persistence-unit>
</persistence>
<property name="hibernate.hbm2ddl.auto" value="create"/>