Two years ago I was working on a project using:
This pr
I follow your idea of using h2 with Mysql dialect but using JPA Persistence.generateSchema(...).
It does work except all commands are not separated by a semi-column...
How can this been done using JPA 2.1?
Otherwise I will switch to your solution.
import java.util.Properties;
import javax.persistence.Persistence;
import javax.persistence.PersistenceException;
import org.hibernate.jpa.AvailableSettings;
/**
* Generate DDL with hibernate 4+/5:
* http://stackoverflow.com/questions/27314165/generate-ddl-script-at-maven-build-with-hibernate4-jpa-2-1/27314166#27314166
* @author dmary
*
*/
public class Jpa21SchemaExport {
/**
*
*/
public Jpa21SchemaExport() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
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);
persistenceProperties.setProperty(AvailableSettings.JDBC_DRIVER,"org.h2.Driver");
persistenceProperties.setProperty(AvailableSettings.JDBC_URL, "jdbc:h2:mem:export");
persistenceProperties.setProperty(AvailableSettings.JDBC_USER, "sa");
persistenceProperties.setProperty(AvailableSettings.JDBC_PASSWORD, "");
persistenceProperties.setProperty(org.hibernate.cfg.AvailableSettings.DIALECT, "com.wiztivi.sdk.persistence.MySQL5InnoDBUTF8Dialect");
try
{
Persistence.generateSchema(persistenceUnitName, persistenceProperties);
} catch (PersistenceException pe)
{
System.err.println("DDL generation failed: ");
pe.printStackTrace(System.err);
}
}