私は現在更新中のプロジェクトをたくさん使っています。このプロジェクトをインストールできる場所はいくつかありますが、将来どのバージョンが使用されているのか、どのバージョンが更新されるのかは不明です。今のところ彼らはすべて同じです。クラスからHSQL作成テーブルクエリを作成
私の問題は、休止状態のエンティティクラスに多くの変更があり、データベースの内容が失われることなく、新しいバージョンに更新するのは簡単でなければならないという事実に由来します。 WARを置き換えて起動すると、それ自体が移行されます。
私は、hibernate.hbm2ddl.auto =を作成しない限り、Hibernateはテーブルを変更しませんが、実際にはすべてのデータを捨て去るのですか?
これで、Springコンテキストが完全にロードされると、versionXからversionYへのすべての変更を行ってデータベースを現在のバージョンに移行するBeanを実行します(以前のバージョンはデータベースに保存されています)テーブルを手動で変更します。
これは、いくつかの列を追加するために、いくつかのハードコードされたALTER TABLEをやってずっと面倒ではありませんが、それは完全に新しいテーブルを追加することに来るとき、それはすべてのことを書くために持っている愚かな感じ...だから私
質問(複数可)このです:
はどこか コードを休止状態、およびテーブルを作成するための有効なSQLクエリを取り戻すためにエンティティクラスと方言を送信する方法はありますか?
また、テーブルに列を追加するためのSQL文字列をdialect-safeで作成することもできます。
たぶん、あなたは別のアプローチを試してみてください
さて、私はこれがより良い答えであることを決めました。 Spring + Hibernate + Annotationsの依存関係やフィッティングとして自分自身をliquibaseしようとしていますが、独自のカスタムソリューションに使用できるハードコードされたSQLクエリを作成するのは素晴らしい仕事でした。ありがとう。 – Stmated
Dipeshからこの回答を確認してください:http://stackoverflow.com/a/12259980/433789 – sdouglass
Hibernateに自動更新を行わせると、新しいnull可能な列を追加するなどの単純なケースではうまくいきますが、より複雑なものに対処できません既存の列の値に基づいて値を計算する必要がある新しい列を追加することを想像してみてください。 )。 –