我正在开发一个使用 JPA/HIbernate 和 Spring 进行持久性和事务管理的项目。此应用程序具有从同一数据库服务器(Sybase 环境)的多个目录和模式映射的表。
为了开始使用内存数据库为这个应用程序创建自动化测试,我必须创建一个替代test-persistence.xml
列表,列出默认的所有相同实体persistence.xml
,但指定替代orm.xml
映射文件,覆盖类中注释中的架构信息。
我的 Spring 测试配置中的关键部分是这样的:
<bean id="hsqlFixes" class="com.example.app.util.HSQLFixes" />
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
depends-on="hsqlFixes">
<property name="persistenceUnitName" value="puName" />
<property name="persistenceXmlLocation"
value="META-INF/persistence-tests.xml" />
....
</bean>
HSQLFixes
执行一些 JDBC 语句只是创建一些类型的 bean在哪里。
并且在persistence-tests.xml
:
<persistence-unit name="puName" transaction-type="RESOURCE_LOCAL">
<mapping-file>META-INF/orm-tests-db1.xml</mapping-file>
<mapping-file>META-INF/orm-tests-db2.xml</mapping-file>
<mapping-file>META-INF/orm-tests-db3.xml</mapping-file>
... followed by the same list of entities from persistence.xml
现在,我想摆脱和中列出的类的重复persistence.xml
,test-persistence.xml
因为我觉得我可以自动生成第二个文件。
我怎么能动态地去做,这样我在添加/删除实体时就不需要更改两个 XML 文件?