2013-04-12 17 views
17

私はhbm2ddl.auto = updateで既存のテーブルを更新しようとしています。

データベース列の定義がエンティティの宣言から変更される複数の列がいくつかの表にあります。Hibernate hbm2ddl.auto = updateはMySQLの列定義を更新しません

@Column(name="mycolumn", nullable=false, length=10) 
private Long mycolumn; 

LIKE 'MYCOLUMN' BIGINT(20)NOT NULLデフォルトのMySQLで0

なぜhbm2ddlがそのようなことを更新しないのですか?そのような更新を強制することは可能ですか? hbm2ddlと言って、カラムのデフォルト値を削除し、タイプの長さを変更したいと思っています。

答えて

32

hibernate.hbm2ddl.auto" value="updateは、既存のテーブル列定義を変更しません。いくつかのテストを行ったところ、私はそれが見つかりました:

hibernate.hbm2ddl.auto" value="updateは、まだ存在しないdb列を追加します。

hibernate.hbm2ddl.auto" value="updateは、エンティティ内で削除された/削除されていないdbカラムは削除しません。

hibernate.hbm2ddl.auto" value="updateは、すでに作成されているdb列は変更しません。

テーブルデータをバックアップして削除し、アプリケーションを再起動してそのテーブルのスキーマをエンティティと同期させる必要があります。その後、データをリロードします。

参照してください:
Need clarity on hibernate.hbm2ddl.auto=update


Hibernate hbm2ddl.auto possible values and what they do?

関連する問題