我目前正在开发一个使用Hibernate作为ORM-Tool的Java SE应用程序。我想使用不同的数据库进行测试,因此我创建了第二个persistence.xml文件。问题是,当我执行测试时,加载并使用了错误的persistence.xml。
我的文件结构如下:
src
|- main
|- resources
|- META-INF
|- persistence.xml // This one is used
|- test
|- resources
|- META-INF
|- persistence.xml // This one should be used
persistence.xml文件看起来一样,只有模式不同。
住:
<property name="javax.persistence.jdbc.url" value="jdbc:h2:./data/mydb" />
测试:
<property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:mydb" />
我编写了一个测试,检查是否使用了正确的持久性单元,代码如下所示:
Session session = (Session)entityManager.getDelegate();
SessionFactory sessionFactory = session.getSessionFactory();
Map<String, Object> properties = sessionFactory.getProperties();
String url = (String) properties.get("hibernate.connection.url");
assertThat(url, containsString(":mem:")); // Wrong url