Hibernate 如何通过Persistence.generateSchema()生成DDL? java:/jdbc/MyDataSource
这是我的persistence.xml。如何通过Persistence.generateSchema()生成DB模式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]时出错 但是,它不必连接我的
公共类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