2016-03-31 4 views
0

Ich entwickle einen Bet-Service mit Java und MySql mit Spring und Hibernate, aber ich habe eine Frage zu einer Abbildung:MySQL-Mapping null boolean zu Java mit Hibernate

In meiner Datenbank habe ich bet types (Fragen) wie : Wer wird das Spiel gewinnen? und bet options für jeden Typ wie: 1, X, 2. Jede Option hat einen booleschen Indikator um anzuzeigen, ob eine Option eine Gewinneroption ist oder nicht. So ist die Abbildung in MySql für dieses Attribut ein boolean wie folgt aus: 1, wenn die Option Gewinner ist, 0, wenn die Option lockerer ist und null, wenn die Option nicht, ist aber weder Gewinner oder Verlierer

Also, in meinem Dienst layer, wie kann ich überprüfen, ob das Attribut winner in einer Option null ist? Ich habe versucht option.getIsWinner() != null, aber Boolean ist ein primitiver Typ, so dass es null sein kann. Irgendeine Idee dazu?

Danke.

Antwort

1

Java hat zwei boolesche Typen; Kleinbuchstaben-b boolean, die eine primitive ist, und eine ist Großbuchstabe , die ein Objekt ist. Die Objektvariante kann auch null sein, daher sollte es möglich sein, dass sie null ist, falls die Datenbankspalte null ist. Wenn Sie zu java.lang.Boolean wechseln, sollten Sie das erwartete Verhalten erhalten. Ich habe gerade in den Hibernate-Dokumenten nachgesehen, und es unterstützt beides.

+0

Hallo, danke für deine Antwort. Also muss ich "@Type (type =" java.lang.Boolean ")" Annotation in meinem Getter angeben, um einen booleschen Typ aus der Datenbank in Hibernate zu erhalten? –

+0

Ich glaube nicht, dass Sie eine @Type-Deklaration benötigen, aber Sie müssen den Typ Ihrer Variablen von (zum Beispiel) 'private boolean option' in' private Boolean option' ändern. Es wird auch einige Nebenwirkungen Ihrer Interaktion mit dieser Eigenschaft geben - Sie müssen zum einen nach Nullen suchen. – Fiid

+1

Ja, das habe ich schon gemacht. Ok, danke für deine Zeit! –