Boolean-Werte in Hibernate mit MySQL 5.0
03 Dec 2007 by retschgi
Heute hatte ich das Problem, dass der Wert von einem boolean innerhalb einer Hibernate-Entity nicht in die Datenbank persistiert wurde. Zur Veranschaulichung hier etwas code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | @entity public class TestClass { @Id @GeneratedValue private int id; private boolean myBoolean public int getId() { return id; } public void setId(int id) { this.id = id; } public boolean isMyBoolean() { return configurable; } public void setMyBoolean(boolean myBoolean) { this.myBoolean = myBoolean; } } |
Das Problem besteht darin, dass MySQL seit der Version 5.0 den SQL-Datentyp Bit verwendet um einen boolschen Wert zu repräsentieren. Offenbar kann Hibernate dies aber nicht richtig handeln. In der Kürze liegt die Würze und daher gibt es auch eine kurze Lösung für dieses Problem:
Folgendes als Field-Definition in der Entity-Bean verwenden:
1 2 | @Column(columnDefinition="TINYINT(1)") private boolean myBoolean; |