查看备用描述符功能,该功能针对您要执行的操作。
请尝试以下设置:
src/main/resources/META-INF/persistence.xml
src/main/resources/META-INF/test.persistence.xml
然后,您可以通过将 System 或 InitialContext 属性设置为test.persistence.xml
openejb.altdd.prefix
test
另一种可能的解决方案可能是在测试中重写持久性单元属性。通过这种方法,您可以避免需要一秒钟,这可能很好,因为保持两个可能是一种痛苦。persistence.xml
您可以使用 Maven 方法,但请注意,根据规范,持久性提供程序只会在找到 的确切 jar 或目录中查找(也称为扫描)bean。因此,请敏锐地意识到,在Maven中,这是两个不同的位置:@Entity
persistence.xml
target/classes
target/test-classes
编辑有关覆盖功能的更多详细信息
您可以通过系统属性或初始上下文属性(包括 jndi.properties 文件)覆盖测试设置中的任何属性。格式为:
<unit-name>.<property>=<value>
例如,例如:persistence.xml
<persistence>
<persistence-unit name="movie-unit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>movieDatabase</jta-data-source>
<non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.max_fetch_depth" value="3"/>
</properties>
</persistence-unit>
</persistence>
可以在测试用例中重写和添加持久性单元属性。目前没有删除它们的设施(如果您有需要,请告诉我们 - 到目前为止还没有真正出现)。
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.LocalInitialContextFactory");
p.put("movie-unit.hibernate.hbm2ddl.auto", "update");
p.put("movie-unit.hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
context = new InitialContext(p);
或者通过文件jndi.properties
java.naming.factory.initial=org.apache.openejb.client.LocalInitialContextFactory
movie-unit.hibernate.hbm2ddl.auto = update
movie-unit.hibernate.dialect = org.hibernate.dialect.HSQLDialect