首页 > 解决方案 > 为多模块项目创建单个 LocalContainerEntityManagerFactoryBean

问题描述

我们的主项目 pom 使用依赖 jars,它们也是使用 Spring 应用程序开发的。

我们面临一个问题,依赖的 jars 也包含实体。我们希望最后只创建一个 LocalContainerEntityManagerFactoryBean 来存储项目中的所有实体(主项目和依赖项)。

我做了一些阅读并尝试实现以下方式但没有成功,

1> 在父项目中使用 MergingPersistenceUnitManager: 问题:当我检查类的源代码时,它需要依赖 jar 中的 persistence.xml 文件。但是我们不使用persistence.xml,我们只是使用注解。

2> 为 LocalContainerEntityManagerFactoryBean 创建 BeanPostProcessor 并在 postProcessBeforeInitialization 方法中设置 ((LocalContainerEntityManagerFactoryBean)bean).setPersistenceUnitPostProcessors()。问题:我们有多个模块,所以如果我这样编码,只会设置最后一个模块 PersistenceUnitPostProcessors。

如果有任何方法可以实现这一目标,有人可以帮忙吗?

在此先感谢,小猫

标签: javaspring-bootspring-data-jpa

解决方案


我找到了解决这个问题的方法。在 bean 后处理器中,我可以通过提供要在相应项目中扫描的包名称来添加 PersistenceUnitPostProcessor。

在依赖项目中,不应为 LocalContainerEntityManagerFactoryBean 创建任何 bean。


推荐阅读