2013-04-12 8 views
17

Ich versuche die vorhandene Tabelle mit hbm2ddl.auto = update zu aktualisieren.

In mehreren Tabellen gibt es mehrere Spalten, in denen sich Datenbankspaltedefinitionen von der Deklaration in Entitäten ändern. WieHibernate hbm2ddl.auto = update aktualisiert keine Spaltendefinitionen in MySQL

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

und

'mycolumn' bigint (20) nicht null Standard 0

in MySQL.

Warum aktualisiert hbm2ddl solche Dinge nicht? Und ist es möglich, ein solches Update zu erzwingen? Ich möchte sagen, Hbm2ddl Standard-Wert der Spalte entfernen und Länge des Typs ändern.

Antwort

32

hibernate.hbm2ddl.auto" value="update werden vorhandene Tabellenspaltedefinitionen nicht geändert. Bei einigen Tests habe ich Folgendes festgestellt:

hibernate.hbm2ddl.auto" value="update wird eine db-Spalte hinzufügen, die noch nicht existiert.

hibernate.hbm2ddl.auto" value="update löscht keine DB-Spalte, die in Ihrer Entität entfernt/nicht mehr vorhanden ist.

hibernate.hbm2ddl.auto" value="update wird keine Datenbankspalte ändern, die bereits erstellt wurde.

Sie müssen die Tabellendaten sichern, löschen und neu starten, um das Schema dieser Tabelle wieder mit Ihrer Entität zu synchronisieren. Laden Sie dann Ihre Daten neu.

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

und
Hibernate hbm2ddl.auto possible values and what they do?

Verwandte Themen