Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Hibernate 如何通过Persistence.generateSchema()生成DDL? java:/jdbc/MyDataSource_Hibernate_Jpa 2.1 - Fatal编程技术网

Hibernate 如何通过Persistence.generateSchema()生成DDL? java:/jdbc/MyDataSource

Hibernate 如何通过Persistence.generateSchema()生成DDL? java:/jdbc/MyDataSource,hibernate,jpa-2.1,Hibernate,Jpa 2.1,这是我的persistence.xml。如何通过Persistence.generateSchema()生成DB模式 公共类SchemaGenerator{ 公共静态void main(字符串参数[]){ 映射属性=新的HashMap(); //添加一些属性 持久性。生成架构(“安全”,属性); } } 它给出了以下错误:org.hibernate.engine.jndi.JndiException:解析jndi名称[java:/jdbc/MyDataSource]时出错 但是,它不必连接我的

这是我的persistence.xml。如何通过Persistence.generateSchema()生成DB模式

公共类SchemaGenerator{
公共静态void main(字符串参数[]){
映射属性=新的HashMap();
//添加一些属性
持久性。生成架构(“安全”,属性);
}
}
它给出了以下错误:org.hibernate.engine.jndi.JndiException:解析jndi名称[java:/jdbc/MyDataSource]时出错


但是,它不必连接我的数据库,因为我只需要生成ddl。

您必须将属性
connection.provider\u class
设置为
org.hibernate.service.jdbc.connections.internal.UserSuppliedConnectionProviderImpl
。这样他就不会试图加载JNDI源代码

这是我的
生成。属性
我使用Ant Hibernate工具进行脱机模式生成:


我看了下面的链接。但这在我的情况下不起作用。您可以从persistence.xml注释掉jta数据源以获得临时修复。原因:org.hibernate.boot.registry.selector.spi.StrategySelectionException:无法将名称[org.hibernate.service.jdbc.connections.internal.UserSuppliedConnectionProviderImpl]解析为策略[org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]在这种情况下,我猜您的Hibernate版本不包括该提供程序-您使用的是哪个版本?如果我从persistence.xml中删除jta数据源,它会给我以下错误:线程“main”中出现异常java.lang.UnsupportedOperationException:应用程序必须在org.hibernate.engine.JDBC.connections.internal.UserSuppliedConnectionProviderImpl.getConnection(UserSuppliedConnectionProviderImpl.java:61)提供JDBC连接。显然,我的图书馆有这样的课程。我正在使用hibernate 4.3.10.Final。您应该检查一下,他为什么调用
getConnection
。从stacktrace代码段中看不到这一点。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="safety" transaction-type="JTA">
    <jta-data-source>java:/jdbc/MyDataSource</jta-data-source>
    <properties>
      <property name="javax.persistence.schema-generation.scripts.action" value="create"/>
      <property name="javax.persistence.schema-generation.scripts.create-target" value="create.ddl"/>
      <property name="hibernate.default_schema" value="safety"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.format_sql" value="false"/>
      <property name="hibernate.use_sql_comments" value="true"/>
    </properties>
  </persistence-unit>
</persistence>
public class SchemaGenerator {
    public static void main(String args[]) {
        Map<String, Object> properties = new HashMap<String, Object>();
        //adding some properties
        Persistence.generateSchema("safety", properties);
    }
}
hibernate.dialect=...
hibernate.connection.provider_class=org.hibernate.service.jdbc.connections.internal.UserSuppliedConnectionProviderImpl
javax.persistence.validation.mode=ddl, callback
hibernate.cache.use_second_level_cache=false
hibernate.cache.use_query_cache=false