2012-04-26 9 views
0

私はJOnASの(Java環境)でのeclipselink2.3プロバイダとPostgreSQLデータベースを使用しています。私の構成は次のとおりです。eclipselinkを使用してPostgreSQLデータベースにテーブルが存在する場合、テーブルの作成を無視するにはどうすればよいですか?

のpersistence.xml:

... 
<property name="eclipselink.ddl-generation" value="create-tables"/> 
<property name="eclipselink.ddl-generation.output-mode" value="database"/> 
<property name="eclipselink.target-database" value="POSTGRESQL"/> 
... 

PostgreSQLのバージョンが

Version : 8.4.11-0squeeze1 

JDBCドライバのバージョンは、データベースが空の場合、問題はありません

postgresql-8.4-703.jdbc3.jar 

です。

私の問題は、eclipselink.ddl生成がcreate-tablesに設定されており、テーブルがすでにデータベースに存在し、エラーが発生し、次のステートメント(here)で処理が続行されない場合です。

誰にも解決策がありますか?

答えて

2

propertyあなたのケースでスローンエラーを防止するものはありません。だから私は次のことをお勧めします。開発、テスト、制作の3つの環境に対応する3つのpersistence.xmlファイルが必要です。あなたはクリーンなデータベースで動作するようにしたいenvironoment開発で

、そう

<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> 

テストenvironomentと同じですが、この場合には、私はテストデータでデータベースを埋めるためにDBUnitのを使用します。製造において

そう

<property name="eclipselink.ddl-generation" value="none"/> 

が正しい選択であるデータベース構造を台無しにしたくありません。

antまたはmavenを使用する場合、このような設定は非常に簡単です(これはかなり標準的なアプローチなので、ネットで例を見つけることができます)。

これは非常に多くの追加作業のように見えるので、この回答は気に入らないと思いますが、長期的にはきれいな設定と分離がうまくいくでしょう。

+0

実際、データベースは作成され、アップストリームで構成されます。だから、私はnoneにプロパティを設定しました。 – Mohammed

0

テーブルがすでに存在する場合、「create-tables」オプションは失敗しません。エラーをログに記録しますが、続行します。 エラーを表示したくない場合は、ロギングをオフにすることができます。あなたは

どのようなエラーを得るのですか?

関連する問題