2013-04-12 38 views
17

Tôi đang cố cập nhật bảng hiện có với hbm2ddl.auto = update.

Có một số cột trong một số bảng trong đó cột cơ sở dữ liệu định nghĩa các thay đổi từ khai báo trong thực thể. Giống nhưHibernate hbm2ddl.auto = cập nhật không cập nhật các định nghĩa cột trong MySQL

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

'mycolumn' bigint (20) không phải null default 0

trong MySQL.

Tại sao hbm2ddl không cập nhật những thứ như vậy? Và có thể ép buộc cập nhật đó không? Tôi muốn nói hbm2ddl để xóa giá trị mặc định của cột và thay đổi độ dài của loại.

Trả lời

32

hibernate.hbm2ddl.auto" value="update sẽ không sửa đổi các định nghĩa cột bảng hiện có. Làm một số thử nghiệm tôi thấy rằng:

hibernate.hbm2ddl.auto" value="update sẽ thêm cột db chưa tồn tại.

hibernate.hbm2ddl.auto" value="update sẽ không xóa cột db bị xóa/không còn trong thực thể của bạn nữa.

hibernate.hbm2ddl.auto" value="update sẽ không sửa đổi cột db đã được tạo.

Bạn sẽ cần phải sao lưu dữ liệu bảng, thả và khởi động lại ứng dụng của bạn để lược đồ của bảng đó được đồng bộ hóa với thực thể của bạn. Sau đó tải lại dữ liệu của bạn.

Xem:
Need clarity on hibernate.hbm2ddl.auto=update


Hibernate hbm2ddl.auto possible values and what they do?

Các vấn đề liên quan