即使打开了调试,设置 show-sql 的解决方案也对我不起作用,所以我最终编写并运行了这个简单的类。
public class SchemaExporter{
public static org.hibernate.cfg.Configuration getConfiguration() {
org.hibernate.cfg.Configuration cfg = new org.hibernate.cfg.Configuration();
ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
scanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));
for (BeanDefinition bd : scanner.findCandidateComponents("com.package.where.my.entitybeans.are")) {
String name = bd.getBeanClassName();
try {
System.out.println("Added annotated entity class " + bd.getBeanClassName());
cfg.addAnnotatedClass(Class.forName(name));
} catch (Exception e) {
e.printStackTrace();
}
}
cfg.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
cfg.setProperty("hibernate.show_sql", "true");
cfg.setProperty("hibernate.format_sql", "true");
cfg.setProperty("hibernate.hbm2ddl.auto", "update");
cfg.setProperty("hibernate.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy");
cfg.setProperty("hibernate.connection.url", CONNECTIONURL);
cfg.setProperty("hibernate.connection.username", USERNAME);
cfg.setProperty("hibernate.connection.password", PWD);
cfg.setProperty("hibernate.connection.driver", DRIVER);
return cfg;
}
public static void main(String[] args) {
SchemaExport export = new SchemaExport(getConfiguration());
export.setDelimiter(";");
export.setHaltOnError(true);
export.setFormat(true);
export.create(true,true);
}
}
运行它,我可以在控制台中看到DDL,并按照Chris的建议继续