Hibernate Mapping Boolean

MS-Tech

Erfahrenes Mitglied
Hallo Zusammen,

ich habe eine Klasse, in der sich nur Boolean´s befinden und die in verschiedenen Datenbanken abgespeichert werden können sollten :). In meiner Hibernate-Schicht habe ich momentan den Update-Mechanismus (hibernate.hbm2ddl.auto) auf update gesetzt (ich weiß das sollte man nicht..).

Nun habe ich die Klasse um weitere Boolean´s erweitert. Wenn ich nun meine Anwendung ausführe, dann wird gemeckert, dass die neuen Spalten nicht erzeugt werden konnten, da ich die Spalte als not-null definiert habe, aber keinen Default-Wert angegeben habe. Nun habe ich einige Einträge durchsucht und ich komme immer wieder auf die columnDefinition"..", die angegeben werden sollte. Dies ist aber datenbankabhängig, soweit ich das gesehen habe. Gibt es eine Annotation, mit der ich einen Default-Wert datenbankunabhängig angeben kann? Ich geben nirgends Datentypen vor, sondern überlass das der Hibernate-Verwaltung.

Hat jemand eine Idee?

Viele Grüße
Sascha
 
Warum setzt du nicht einfach den Wert innerhalb der Klasse auf false oder true, dann hast du nen Default-Value angegeben. Ich denke auch das das nullable als optional angesehen werden kann, wenn man den Wert in der Entität direkt setzt.


Code:
	@Column(name = "valid", nullable = false)
	private Boolean valid = true;
 
Hi,

das mach ich auch genauso, wie in deinem Post. Ich erhalte aber dann folgende Exception:

21.02.2013 15:50:43,438 ERROR SchemaUpdate:213 - In an ALTER TABLE statement, the column 'XYZ' has been specified as NOT NULL and either the DEFAULT clause was not specified or was specified as DEFAULT NULL.

Viele Grüße

Sascha
 
Hallo

Ich glaube, wenn man die Membervariable auf "true" setzt, ist das nur ein Default-value für einen Insert oder Update. Hier will er ja aber ein alter table machen, da deine Klasse jetzt eine "Spalte" mehr aufweist - und es schaut danach aus, als würde er hier keinen "default wert finden". Ausserdem kann man den Wert auch auf null setzen, von daher ist es eigentlich gar kein richtiger Default-Wert... ?

Schau mal hier:
http://stackoverflow.com/questions/3110266/how-to-set-default-value-in-hibernate

Und nebenbei: Ich hab mal irgendwo gelesen, dass man die Column-Definitions jeweils auf den Getter-Methoden machen sollte. Ich weiss jetzt aber echt nicht mehr warum - ich hab nur noch "Das macht das Leben von Hibernate einfacher" im Kopf *g* - und finde auch nichts mehr dazu - in der Doku von Hibernate sind die jedenfalls auch immer auf den gettern... Aber vielleicht ist diese Aussage auch schon wieder veraltet...

Gruss
slowy
 
Hi,

danke für deine Antwort. Na dann werde ich das wohl lieber mit meinem eigenen Update-Mechanismus erschlagen, denn damit funktioniert es.

Ja die columndefintiion ist mir ein Begriff, aber das ist datenbankabhängig und ich will bzw. mus 5 - 6 Datenbanken unterstützen.

Schade, dass Hibernate das so zickt :).

Liebe Grüße
Sascha
 

Neue Beiträge

Zurück