我想要Configuration.generateSchemaUpdateScriptList()
。但是,使用LocalContainerEntityManagerFactoryBean
配置Hibernate。如何从Configuration
实例访问LocalContainerEntityManagerFactoryBean
对象?或者有更好的方法来实现这一目标吗?
答案 0 :(得分:2)
好的,这是一场为期两天的比赛,主打马拉松比赛,但最终我找到了一个解决方案,虽然它有些笨拙。
我浏览了Hibernate的Integrator
,这在文档中几乎没有提及。有关它的更多信息可以在链接的Hibernate JIRA问题HHH-5562和HHH-6081中找到。但是,一旦您知道关键字,就可以从a few sources拼凑出足够的信息来获取工作示例。仍然不能很好地使用Spring,这是SO question中提到的一个问题。
所以,最终的解决方案有点过时,但它确实有效:
public class GetConfigIntegrator implements Integrator {
private static Configuration configuration;
public static Configuration getConfiguration() {
return configuration;
}
@Override
public void integrate(Configuration configuration, /* ... */) {
GetConfigIntegrator.configuration = configuration;
}
// Empty Integrator implementation...
}
可以看出,这个愚蠢的集成商只是将配置存储在静态变量中,因此可以在以后访问。不理想,但面对没有选择,我很高兴找到这样的道路。
要注册集成商,需要创建以下文件,每个集成商类(全名)一行,如下所示:
# src/main/resources/META-INF/services/org.hibernate.integrator.spi.Integrator:
<full package name>.GetConfigIntegrator