我知道有这样的指示:
Persistence.createEntityManagerFactory("persistence-unit-name");
JPA持久性机制读取"persistence.xml“文件,查找名为" persistence - unit -name”的持久性单元,并基于它构造EntityManagerFactory。
我的问题是,如何强制JPA接受与“persistence.xml”不同的文件??例如,"persistence-test.xml“。
发布于 2011-08-29 16:38:44
没有标准化的JPA方法可以做到这一点,尽管各个JPA提供商可能提供了一种方法。我建议使用标准的方法为main和test设置不同的类路径。
例如,如果您使用Maven,并且您有两个META-INF/persistence.xml
文件,一个在src/main/resources
中,另一个在src/test/resources
中,测试将选择src/test/resources
中的文件,因为Maven在类路径中将测试类/资源放在主类/资源之前。您可以很容易地将Ant配置为以类似的方式工作。
如果您需要更高级的逻辑,请考虑使用Spring's JPA support。它可以让你处理像integrating multiple persistence.xml files这样的高级情况。
发布于 2012-04-12 06:53:24
在EclipseLink中,您可以执行以下操作:
Properties pros = new Properties();
pros.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML,
"META-INF/persistence-alternative.xml");
EntityManagerFactory factory =
Persistence.createEntityManagerFactory("pu-name", pros);
发布于 2011-08-29 16:41:30
我觉得你做不到。要做到这一点有很长的路要走:
persistence-test.xml
并呈现一个Map<String, String>
属性,然后.Persistence.createEntityManagerFactory(persistenceUnitName, Map properties)
。这样,它就不会从persistence.xml
.中读取,而是从properties
地图中读取
https://stackoverflow.com/questions/7227814
复制相似问题