1

私は自分のpersistence.xmlを

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

<property name="toplink.ddl-generation" value="create-tables"/>

そして、予想どおり、アプリケーションの実行間でデータが保持されるようになりました。ただし、これは、この設定が機能することを期待する方法ではありません。テーブルが欠落しているか、一致していない場合にのみ作成する必要がありますか?

これが標準なのか、それとも JPA を正しく使用していないことを示しているのか、drop-and-create が設定されているとテーブルが簡単に削除されてしまうのではないかと思っています。

4

2 に答える 2

1

はい、あなたの観察は正しいと思います。少なくとも私は同じ問題を抱えていました。あなたの説明された振る舞いに別の選択肢があれば素晴らしいでしょう。

于 2012-05-04T10:49:34.527 に答える
1

これは意図された動作です。

create-tablesテーブルの作成のみを試みます。テーブルがすでに存在する場合、削除も置換も行われず、既存のテーブルが使用されます。これは、テーブルが作成しようとしているテーブルと一致するかどうかをチェックしませ。指定された名前のテーブルが存在するかどうかだけです。スキームが変更された場合は、テーブルを手動で(または別のメカニズムを介して)削除する必要があるため、次回は新しく作成されます。

drop-and-create-tables最初に既存のテーブルを削除してから、新しいテーブルを作成します。テーブルを削除すると、テーブル内のすべてのデータが失われることに注意してください。

于 2012-05-04T10:51:31.513 に答える