2017-06-14 8 views
1

私はプロジェクトで春にJPA(休止状態の実装)を使用しています。自動テストを実行する場合、persistance.xmlはspringを使用して構成され、データベース用の作成および削除スクリプトを生成します。JPAスクリプト生成用複製staments

Bookと呼ばれるエンティティは1つだけです。テーブルBookを作成するには、作成スクリプトに1行、ドロップスクリプトには1行を作成して、テーブルBookを削除する必要があります。

問題は、テストを実行するたびにスクリプトが再生成されず、新しい行がスクリプトに追加されるということです。

jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriver 
jdbc.url=jdbc:hsqldb:mem:testdb 
jdbc.username=sa 
jdbc.password= 

jdbc.showSql=true 
jpa.database.action=drop-and-create 
jpa.scripts.action=drop-and-create 

create table Book (title varchar(255) not null, primary key (title)) 
create table Book (title varchar(255) not null, primary key (title)) 
create table Book (title varchar(255) not null, primary key (title)) 

これらは、持続性の設定が

<!-- C3p0 datasource with connection pool configuration --> 
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
    <property name="driverClass" value="${jdbc.driverClassName}" /> 
    <property name="jdbcUrl" value="${jdbc.url}" /> 
    <property name="user" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
    <property name="maxPoolSize" value="20" /> 
    <property name="minPoolSize" value="5" /> 
    <property name="maxStatements" value="50" /> 
</bean> 

    <bean id="EntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaVendorAdapter" ref="JpaAdapter" /> 
    <property name="persistenceUnitName" value="com.test.domain.PU" /> 
    <property name="jpaPropertyMap"> 
     <map> 
      <entry key="javax.persistence.schema-generation.database.action" value="${jpa.database.action:none}"/> 
      <entry key="javax.persistence.schema-generation.scripts.action" value="${jpa.scripts.action:none}"/> 
      <entry key="javax.persistence.schema-generation.scripts.drop-target" value="${jpa.scripts.drop-target:target/generated-resources/schemagen/db/drop.ddl}"/> 
      <entry key="javax.persistence.schema-generation.scripts.create-target" value="${jpa.scripts.create-target:target/generated-resources/schemagen/db/create.ddl}"/> 
      <!-- If present, a ddl script is loaded to init the db. Used only during development. For production a specific script will be provided. 
       The script is activated on create, drop-and-create, and create-and-drop options for database schema creation -->      
      <entry key="javax.persistence.sql-load-script-source" value="${jpa.sql-load-script-source:sql/init_db.ddl}"/> 
     </map> 
    </property> 
</bean> 

を値とテスト中に使用されるプロパティファイルは以下のとおりです。私は、テストを3回実行するのであれば、スクリプトは次のようになります誰かがこの現象を引き起こしている可能性があることを知っていますか?

+0

メインメソッドに@Transactionalを入れてみましたか? – German

+0

私は、メインメソッドに対して@Transactionalを使用しています。それ以上の調査の後、それは休止状態のバージョンの問題であるようです。 – xavipen

答えて

2

さらなる調査の後、この問題は休止状態に関連しているようです。

私はバージョン5.2.10を使用しています。休止状態の最後。しかし、私がバージョン4.3.6に戻ったとき、冬眠のすべてがうまくいきます。

関連する問題