2011-01-26 24 views
1

私は以前にhibernate(JPA)を使ってdbを作成しましたが、どのエンティティに対しても@versionフィールドは含まれていませんでした。 このプロジェクトが何か重要なものになったことが判明し、バージョン管理(オプティミスティック・ロック付きのバージョニング)を使用する必要があります。Hibernate:バージョン管理されていないDBにバージョニングを追加

私は、@versionアノテーションを持つすべての単一のエンティティに新しいプロパティ(フィールド)を追加する必要があることは知っています。

質問:どのように私は本当のDB(MySQLの)データの損失やあまりにも多くの作業をせずにバージョンの列を含めるために更新することができます知っていますか?

ありがとうございました。

答えて

3

すべてのエンティティと@Version属性のテーブルの列を作成するSQL文を作成します。次に、他のクエリを使用して、すべての行のこの列の値を1に設定します。

その他の方法は、既定値で列を作成し、既定値を削除することです。 (MYSQLのための作品)

ALTER TABLE xyz ADD version integer NOT NULL DEFAULT 1; 
ALTER TABLE xyz CHANGE version version integer NOT NULL; 

このアプローチのpurpuseは、それがversionに値を設定していない場合でも、限り、あなたは(デフォルトを除く)は、第2のステートメントを実行しないように、古いアプリケーションが実行されるということです新しいオブジェクトを作成するときに

+0

おかげだろう。私はこのようなことをすることを考えました。しかし、バージョンフィールドの値を手動で挿入すると問題が発生するかどうかは正確に分かりませんでした。もう一度ありがとう。 – Marcus

3

OracleのDDLで、それは非常に alter table xyz add (version NUMBER default 1 not null);

+0

他のユーザーには便利です。ありがとう。 – Marcus

関連する問題