2016-09-07 4 views
0

永続プロバイダとしてcamelとopen jpaを使用していますが、私はalter文をprductionで実行したくありません。 persistence.xmlの永続性を停止する方法JPA

ALTERコマンドが実行されないように、我々は、 openjpa.jdbc.SynchronizeMappingsのために配置する必要がどのような値
<persistence-unit name="camel-openjpa-oracle-alert" transaction-type="RESOURCE_LOCAL">    
. 
. 
<provider> 
      org.apache.openjpa.persistence.PersistenceProviderImpl 
     </provider> 
<properties> 
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=false)" /> 
</properties> 
. 
.  
</persistence-unit> 

の スナップショット。

私は検索しましたが、そのような価値は見つかりませんでした。

答えて

1

あなたは何をしているのか、なぜSynchronizeMappingsを使用する必要があるのか​​を少し知っておきましょう。 ForeignKeys = trueを使用すると、OpenJPAでスキーマを読んで、データベースFKが定義されているかどうかを判断できます(OpenJPAでは親/子FK制約を正しく満たすようにOpenJPAがこれらのFKを認識します)。これはSynchMappingsを完全に有効に使用しています。しかし、「buildSchema」を使用することによって、あなたは、特にこのコメントは、このOpenJPAのドキュメントから持ち上げられる....「データベーススキーマは、既存のマッピングを一致さ」を作るためにOpenJPAのを言っている:

http://openjpa.apache.org/builds/1.2.3/apache-openjpa/docs/ref_guide_mapping.html#ref_guide_mapping_synch

したがって、あなたはありますOpenJPAにデータベーススキーマの更新を指示します。 OpenJPAでドメインモデルと一致するようにスキーマを更新したくない場合は、 'buildSchema'を削除できます。つまり、試してみてください。

それとも、それがスキーマ/ドメインを見つけた場合は、上記のドキュメントの状態として、OpenJPAのが例外をスローします....「buildSchema」の代わりに「検証」を使用することができますあなたが望むものではないかもしれない不一致。私はあなたが上記の文書を読んで、あなたに利用可能なオプションを見てみることをお勧めします。

おかげで、

ヒースTHOMANN

関連する問題