あなたがやろうとしていることを目的とした代替記述子機能をチェックしてください。
このセットアップを試してください:
src/main/resources/META-INF/persistence.xml
src/main/resources/META-INF/test.persistence.xml
次にtest.persistence.xml
、openejb.altdd.prefix
System または InitialContext プロパティをtest
別の可能な解決策は、 test で持続性ユニットのプロパティをオーバーライドすることです。persistence.xml
このアプローチを使用すると、 2 つを維持するのが面倒な場合があるため、1 秒の必要性を回避できます。
Maven アプローチを使用できますが、仕様ごとに、永続化プロバイダーは Beanが見つかっ@Entity
た正確な jar またはディレクトリ内の Beanのみを検索 (スキャン) することに注意してください。persistence.xml
そのため、Maven ではこれらが 2 つの異なる場所であることに注意してください。
target/classes
target/test-classes
EDITオーバーライド機能の詳細
システム プロパティまたは初期コンテキスト プロパティ (これには 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