# [Hibernate] Nachträgliches Hinzufügen einer Spalte



## mg_666 (1. Apr 2008)

Servus,

ich stehe vor folgendem Problem. In einer Tabelle soll eine zusätzliche Spalte hinzugefügt werden die vom Typ Boolean ist. In der Tabelle sind jedoch schon Datensätze vorhanden. Wenn ich nun die MappingKlasse um diese Spalte erweitere wird zwar das neue Datenfeld in der Tabelle hinzugefügt. Jedoch wird diese nicht mit einem Default-Wert bei den bereits bestehenden Datensätzen vorbelegt. Die Folge ist, dass es zu Programmabstürzen kommt wenn an dieses Feld ausgelesen wird (z.B. getBoolean ==> kommt ne Null).
Gut, ich habe es im Moment so gelöst und frage es nach der Null ab und schicke dementsprechend einen richtigen Boolean-Wert. 

Jedoch wollte ich nun wissen ob es möglich ist, Hibernate mitzugeben das er alle Datensätze bei der dementsprechenden Spalte einen Wert wie false oder true hinterlegt wenn die neue Spalte erzeugt wird.


----------



## ms (1. Apr 2008)

Update-Schema generieren lassen und ein Updatestatement händisch für den Boolean schreiben.
Ausführen, Applikation neu starten, fertig.

Hibernate kann viel, aber nicht alles.

ms


----------



## mg_666 (1. Apr 2008)

Diese Antwort wollte ich jetzt eigentlich nicht hören 
Schade und Danke
Gruß
mg


----------



## mg_666 (1. Apr 2008)

Hibernate kann doch alles 

@Column(name="visible", columnDefinition="boolean default true")
private Boolean visible =  true;


----------



## maki (1. Apr 2008)

mg_666 hat gesagt.:
			
		

> Hibernate kann doch alles
> 
> @Column(name="visible", columnDefinition="boolean default true")
> private Boolean visible =  true;


Was machst du mit Datensätzen die schon vorhanden sind?


----------



## mg_666 (1. Apr 2008)

Die ändert Hibernate automatisch, hätte mich auch gewundert wenn das nicht gingen würde.
Ich nehme mal an das Hibernate auch nur ein ALTER TABLE auf die Tabelle ausführt.


----------



## maki (1. Apr 2008)

ALTER TABLE ändert das Schema, nicht die Daten in den Tabellen.


----------



## mg_666 (1. Apr 2008)

und wennst ein default mit gibst??? einfach mal probieren


----------

