0

org.apache.openjpa.jdbc.ant.MappingToolTask​​ を使用すると、ドメイン モデルのクラスと db スキーマを同期させることができると言われています。したがって、次のスクリプトを Ant タスクとして使用することで、persistance.xml の特定のデータベースに新しい列を追加できました。

<target>
   <taskdef name="mappingtool" classpathref="maven.compile.classpath" classname="org.apache.openjpa.jdbc.ant.MappingToolTask" />
      <mappingtool schemaAction="refresh" >
      </mappingtool>
</target>

このスクリプトは、ドメイン クラスに新しい属性を追加するたびに新しい列を追加します。しかし、ドメインクラスからそれらを削除しても、対応する列は削除されません。単一の ant スクリプトを使用して両方 (追加/削除) の同期をアーカイブする方法はありますか?

4

1 に答える 1

0

こちらこちらのユーザーマニュアルをご覧ください。

  • 更新:保持してから追加するのと同じです。
    • 保持:指定されたXML定義内のすべてのスキーマコンポーネントを保持しますが、残りはデータベースから削除します。このアクションによってスキーマコンポーネントが追加されることはありません。
    • 追加:これは、指定しない場合のデフォルトのアクションです。テーブル、列、インデックスなどを追加することにより、指定されたXMLドキュメントでスキーマを最新の状態にします。このアクションによってスキーマコンポーネントが削除されることはありません。

おそらく、「更新」を「ドロップ、追加」に変更してみてください。

于 2010-10-26T15:51:10.237 に答える