0

JOnAS(Java環境)でeclipselink2.3プロバイダーを備えた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-generationがcreate-tablesに設定されていて、テーブルがデータベースにすでに存在している場合、エラーが発生し、ここで説明するようにプロセスが次のステートメントに進まないことです。

誰かがその解決策を見ていますか?

4

2 に答える 2

2

あなたの場合、スローインエラーを防ぐプロパティはありません。だから私は次のことを提案します。開発、テスト、本番の3つの異なる環境用に3つのpersistence.xmlファイルが必要です。

開発環境では、クリーンなデータベースで作業したいので、

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

テスト環境でも同じですが、この場合、DBUnitを使用してデータベースにテストデータを入力します。

本番環境では、データベース構造をいじりたくないので、

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

正しい選択です。

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

私はあなたがこの答えを気に入らないと思います;)これはかなり多くの追加作業のように見えるので、しかし長期的にはクリーンな構成と分離は報われるでしょう。

于 2012-04-26T13:18:34.317 に答える
0

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

どのようなエラーが発生しますか?

于 2012-04-26T13:23:21.783 に答える