<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>3.0</version>
<executions>
<execution>
<id>generate-sql-schema</id>
<phase>process-sources</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
<configuration>
<hibernatetool>
<jpaconfiguration persistenceunit="${persistenceUnitName}" />
<hbm2ddl update="true" create="true" export="false"
outputfilename="src/main/sql/schema.sql" format="true"
console="true" />
</hibernatetool>
</configuration>
</execution>
</executions>
</plugin>
但我得到以下错误:
[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (generate-sql-schema) on project my-project: There was an error creating the AntRun task.
An Ant BuildException has occured: java.lang.NoClassDefFoundError: org/hibernate/util/ReflectHelper: org.hibernate.util.ReflectHelper -> [Help 1]
已迁移到新包的该类:org.hibernate.internal.util.ReflectHelper
然而,我没有找到在MAVEN Build中继续生成DDL创建脚本的明确方法。
那又怎样?它不是应该支持的一个主要特性吗?怎么做?
<property name="javax.persistence.schema-generation.scripts.action" value="create"/>
<property name="javax.persistence.schema-generation.create-source" value="metadata"/>
<property name="javax.persistence.schema-generation.scripts.create-target" value="target/jpa/sql/create-schema.sql"/>
import java.io.IOException;
import java.util.Properties;
import javax.persistence.Persistence;
import org.hibernate.jpa.AvailableSettings;
public class JpaSchemaExport {
public static void main(String[] args) throws IOException {
execute(args[0], args[1]);
System.exit(0);
}
public static void execute(String persistenceUnitName, String destination) {
System.out.println("Generating DDL create script to : " + destination);
final Properties persistenceProperties = new Properties();
// XXX force persistence properties : remove database target
persistenceProperties.setProperty(org.hibernate.cfg.AvailableSettings.HBM2DDL_AUTO, "");
persistenceProperties.setProperty(AvailableSettings.SCHEMA_GEN_DATABASE_ACTION, "none");
// XXX force persistence properties : define create script target from metadata to destination
// persistenceProperties.setProperty(AvailableSettings.SCHEMA_GEN_CREATE_SCHEMAS, "true");
persistenceProperties.setProperty(AvailableSettings.SCHEMA_GEN_SCRIPTS_ACTION, "create");
persistenceProperties.setProperty(AvailableSettings.SCHEMA_GEN_CREATE_SOURCE, "metadata");
persistenceProperties.setProperty(AvailableSettings.SCHEMA_GEN_SCRIPTS_CREATE_TARGET, destination);
Persistence.generateSchema(persistenceUnitName, persistenceProperties);
}
}
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>generate-ddl-create</id>
<phase>process-classes</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<!-- ANT Task definition -->
<java classname="com.orange.tools.jpa.JpaSchemaExport"
fork="true" failonerror="true">
<arg value="${persistenceUnitName}" />
<arg value="target/jpa/sql/schema-create.sql" />
<!-- reference to the passed-in classpath reference -->
<classpath refid="maven.compile.classpath" />
</java>
</target>
</configuration>
</execution>
</executions>
</plugin>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-maven-plugin</artifactId>
<version>4.3.1.Final</version>
</dependency>
问题内容: 如何使用SQL(选择/存储过程/等)从SQL Server数据库生成所有表的DDL(带有外键,索引等)脚本?我需要除数据外的所有内容。 我 无法 使用Sql Server Management Studio,因为我想在将在Linux上运行的node.js脚本中使用它! 问题答案: 对于表:(您可以按以下方式工作) 程序如下:
DB2 RazorSQL生成DDL是用于创建用于创建该表的SQL命令。在DB2 RazorSQL生成DDL,可参考以下操作: 生成结果如下:
我正在测试JPA2。1和新的“模式生成”功能。为此,我在HyperSQL数据库下测试了两个实现: Eclipse Link 2.5.2-M1,它是参考实现。 Hibernate4.3 我对实现没有任何偏好(甚至对性能也没有偏好)。我测试了EclipseLink,因为它是第一个JPA2。1实现可用,但现在,Hibernate4.3在这里,JPA2也在这里。1合规。我唯一想要的是获得独立于JPA提供者
在Tomcat web应用程序上运行的Maven-Spring-Hibernate-MySql中,我使用hibernate ddl生成带有mysql5InnodbDealication的DB模式。 除了外键的cascade选项外,模式的生成很好。例如,我有这样的结构: 保存用户详细信息对象的用户对象,两者共享相同的键: 下面是用户详细信息的模式创建: 正如您所看到的,在“外键”部分中没有写任何“o
null null 库版本: (使用gradle,而不是maven)
问题内容: 我将Spring Boot与结合使用,但是当应用程序重新启动时,所有表都会删除并再次创建。有什么方法可以避免为现有表重新创建? 问题答案: 通常不应该在生产中使用hibernate.ddl- auto 。