Hbm2ddl.auto = updateで既存のテーブルを更新しようとしています。
データベースの列定義がエンティティの宣言から変更されるいくつかのテーブルにいくつかの列があります。お気に入り
@Column(name="mycolumn", nullable=false, length=10)
private Long mycolumn;
そして
'mycolumn' bigint(20)not null default 0
mySQLで。
なぜhbm2ddlはそのようなものを更新しないのですか?そして、そのような更新を強制することは可能ですか? hbm2ddlと言って、列のデフォルト値を削除し、型の長さを変更したいと思います。
hibernate.hbm2ddl.auto" value="update
既存のテーブル列定義を変更しません。いくつかのテストを行って、私はそれを見つけました:
hibernate.hbm2ddl.auto" value="update
は、まだ存在していないdb列を追加します。
hibernate.hbm2ddl.auto" value="update
は、削除された/エンティティに存在しなくなったdb列を削除しません。
hibernate.hbm2ddl.auto" value="update
は、すでに作成されているdb列を変更しません。
テーブルのスキーマをエンティティと同期させるには、テーブルデータをバックアップしてドロップし、アプリケーションを再起動する必要があります。次に、データをリロードします。