2012-04-11 4 views
0

アプリケーションのすべてのテーブルが存在する場合はそのテーブルを削除し、新しいデータでそれらを初期化するアプリケーションブートストラップを作成しようとしています。テーブルを削除するためのSpringブートストラップコンテキスト

私はデータソースコンテキストをロードするSpringコンテキストを作成しましたが、データソースの初期化をオーバーライドしてデータソースのロード方法に応じて動作をカスタマイズできる方法はわかりません。データソースは、アプリケーションからロードされている場合はそう.. ..私のJPA実装として

を休止状態を使用して - 私は更新するために、スキーマを希望:

<persistence-unit name="myDB" transaction-type="RESOURCE_LOCAL"> 
    <properties> 
     <property name="hibernate.hbm2ddl.auto" value="update"/> 
    </properties> 
</persistence-unit> 

をデータソースは、ブートストラップからロードされている場合 - その後、新鮮なデータがロードされる前に、データベースは常にゼロから作成されるように、私は何とか、この動作をオーバーロードする必要があります。

<persistence-unit name="myDB" transaction-type="RESOURCE_LOCAL"> 
    <properties> 
     <property name="hibernate.hbm2ddl.auto" value="create"/> 
    </properties> 
</persistence-unit> 

私は「更新」を使用してデータソースをロードすると同じように動作しない取っているアプローチテーブルを設定してからドロップする新しいデータをロードしようとする前に存在する場合ただし、データを書き込むためのテーブルは存在しません。予め

おかげサイモン

答えて

0

かわりpersistance.xmlのばね構成からJPAプロパティを通過しPlaceholderConfigurer(おそらくは、システム特性は=「OVERRIDE」)、または春プロファイルによって構成することができるプレースホルダを使用することができ(3.1以降)またはMavenフィルタリングを使用してください:

<util:map id="jpaPropertyMap" key-type="java.lang.String" value-type="java.lang.Object"> 
    <entry key="hibernate.hbm2ddl.auto" value="${database.ddl.mode}" /> 
</util:map> 

<bean id="managementEntityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    p:dataSource-ref="dataSource" 
    p:jpaPropertyMap-ref="jpaPropertyMap" /> 
+0

ありがとう – totalcruise

関連する問題