gpt4 book ai didi

java - Spring /hibernate : how to get Configuration from LocalContainerEntityManagerFactoryBean

转载 作者:行者123 更新时间:2023-11-30 03:38:42 25 4
gpt4 key购买 nike

我想运行Configuration.generateSchemaUpdateScriptList()。但是 Hibernate 是使用 LocalContainerEntityManagerFactoryBean 进行配置的。如何从 LocalContainerEntityManagerFactoryBean 实例获取 Configuration 对象?或者有更好的方法来实现这一目标吗?

最佳答案

好吧,这是一场为期两天的墙与头马拉松,但最终我找到了一个解决方案,尽管它有点hacky。

我发现了 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

关于java - Spring /hibernate : how to get Configuration from LocalContainerEntityManagerFactoryBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27252546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com