我想写一个基于由Hibernate提供的SchemaUpdate类的Liquibase变更集生成器。 目标是获得Hibernate更新脚本的好处以及开发人员根据需要调整它们的可能性。 完成后,SQL将被集成到Liquibase SQL文件中。休眠4.3 SchemaUpdate与JPA
通过实例化SchemaUpdate类并启动execute方法,开始时看起来非常简单。
但是代码执行任何操作。我想从JPA persistence.xml文件初始化Hibernate,我认为这是问题所在。
目前我已经手动设置mysql属性,但Hibernate没有找到实体类。
从JPA配置获取配置(SchemaUpdate类所需)的最佳方式是什么?
我已经搜索了一段时间的解决方案,但所有人都使用EJB3Configuration类,而这个类在Hibernate 4.3中不再存在。
Thaks求助!
例如,我在做这样的事情:
final File persistenceFile = new File("src/main/resources/META-INF/persistence.xml");
final Configuration cfg = new Configuration();
if (! persistenceFile.exists()) {
throw new FileNotFoundException(persistenceFile.getAbsolutePath() + " not found");
}
final List<String> jpaConfiguration = Files.readLines(persistenceFile, Charsets.UTF_8);
for (final String line : jpaConfiguration) {
if (line.contains("property")) {
final String[] props = line.split("\\\"");
cfg.setProperty(props[1], props[3]);
}
}
final SchemaUpdate updater = new SchemaUpdate(cfg);
updater.setOutputFile("target/script.sql");
updater.execute(true, false);
我已经通过手动查找源目录中的实体并使用addAnnotatedClass()方法解决了该问题。 – user2810476