Ich habe eine Klasse mit einem booleschen Attribut. Wenn ich diese Klasse instanziiere und behalte, wird das boolesche Attribut mit dem Wert "false" anstatt mit dem erwarteten "null" gespeichert. Wie kann ich ein boolesches Attribut auf "Null" setzen?Wie füge ich den Nullwert in ein boolesches Attribut ein, wenn Hibernate verwendet wird?
Antwort
Dies ist ein seltsames Problem. Ein Boolean
Attribut mit einem null
Wert sollte definitiv als NULL
gespeichert werden und der tinyint
Spalte-Typ erlaubt das. Ich kann das Problem nicht selbst untersuchen, aber hier ist was ich tun würde:
Zuerst würde ich die Protokollierung von Hibernate DML-Anweisungen und JBDC-Parameter aktivieren, um zu bestätigen, dass Hibernate tatsächlich NULL
(und es sollte) übergeben. Die relevanten Kategorien (Kapitel 3.5. Logging) sind org.hibernate.SQL
und org.hibernate.type
.
Wenn der erste Test das Problem nicht aufdeckt, würde ich versuchen, es weiter zu isolieren mit einer einfachen Testklasse mit rohen JDBC, um einen mit einem null
Wert einzufügen (und lesen Sie es auch). Wenn dieser Test nicht positiv ist, würde ich den JDBC-Treiber vermuten.
Welchen JDBC-Treiber (und Version) verwenden Sie übrigens? Versuchen Sie mit der neusten Version von jTDS (und umgekehrt), wenn Sie den Microsoft-Treiber verwenden.
Stellen Sie zunächst sicher, dass Sie einObjekt und nicht einen boolean
Typ definieren. Wenn Sie Hibernate mit JPA-Attributen verwenden, können Sie @Column(nullable=true)
hinzufügen, um Hibernate explizit mitzuteilen, dass die Spalte standardmäßig NULL haben soll.
Nullable Attribut ist standardmäßig True –
Dies funktioniert nicht ... –
Was ist das Schema Ihrer Tabelle? Erlaubt es NULL-Werte in dieser Spalte? Darüber hinaus können Sie versuchen, den Code zu debuggen, in dem Sie eine neue Instanz erstellen. Möglicherweise wird der Wert in Ihrem Code auf "false" gesetzt. – Marc
Zuerst stellen Sie sicher, dass das Objekt, das Sie beibehalten möchten, Boolean nicht primitiv boolean ist. Zweitens können Sie die entsprechende Spalte als char (1) definieren, die 'Y', 'N' oder Nullwert enthalten kann. und schließlich, und das wichtigste die folgende Zeile Sie hibernate.cfg.xml: -
<property name="query.substitutions">'Y'=true,'N'=false</property>
wenn u hibernate.properties verwenden dann folgende Datei: -
hibernate.query.substitutions true 'Y', false 'N'
dies würde helfen Sie out, um Nullwerte in booleschen Typ Spalte zu speichern. Vergessen Sie nicht, die Eigenschaft als type = "boolean" in der Zuordnungsdatei zuzuordnen.
- 1. Elastische Suche/Reifen: Wie filtere ich ein boolesches Attribut?
- 2. JavaScript: Wie füge ich ein Attribut hinzu?
- 3. Wie schließe ich ein boolesches UND in einem Regex ein?
- 4. C# struct, wie wird ein Nullwert zugewiesen?
- 5. Wie füge ich ein HTML-Attribut mit jQuery hinzu
- 6. Wie füge ich ein XML-Attribut mit DataContract
- 7. Rails: Ein boolesches Feld durch ein Dropdown-Menü in simple_form
- 8. Wie füge ich ein Attribut zu einer Lambda-Funktion hinzu?
- 9. Wie füge ich ein Datum in Datomic db.type/instant ein?
- 10. Filter DynamoDBScanExpression durch boolesches Attribut
- 11. Wie füge ich Text mit Format in den Text ein?
- 12. Wie füge ich ein Commit in ein früheres Commit ein?
- 13. Wie füge ich Werte in den Speicher in extjs ein
- 14. In Roslyn (Microsoft CodeAnalysis) wie erstelle ich ein boolesches Literal?
- 15. Wie wird ein ImageView gedreht, wenn SmartEyeGlass SDK verwendet wird?
- 16. Wie füge ich neue Produktpakete in den Warenkorb ein?
- 17. Wie stelle ich den Hibernate-Dialekt in SpringBoot ein?
- 18. Wie füge ich ein zusätzliches Attribut in meine Eingabe für Django-Formulare ein?
- 19. IN DEN WARENKORB - Wie füge ich ein Schlüsselwertpaar hinzu? Php
- 20. Wie kann CLR den Wurffehler umgehen, wenn der Struktur ein Nullwert zugewiesen wird?
- 21. Wie füge ich den YouTube Player in mein SupportFragment ein?
- 22. Ein Nullwert kann keinem primitiven Fehlertyp zugeordnet werden (Spring/Hibernate)
- 23. Wie wird ein Guint64-Wert gedruckt, wenn glib verwendet wird?
- 24. Wie ändere ich ein boolesches LDAP-Active Directory-Attribut mit Net :: LDAP?
- 25. Wie füge ich ein Layout in ein Layout in Android
- 26. Wie füge ich in PDO (sqlite3) ein?
- 27. Wie füge ich ein Skript in Google Mail-Status ein?
- 28. Wie füge ich ein Hintergrundbild in jquery ein?
- 29. Wie füge ich Symbole in ein Formularfeld ein?
- 30. Wie füge ich ein existierendes Git-Repository in ein leeres ein und behalte den Verlauf?
Morte Rolo Können Sie Ihre Klasse und ihre Zuordnung zeigen ??? –
@Arthur Ronald F D Garcia: Es ist nur eine reguläre @Entity Klasse mit einem @Column Boolean Attribut. –
Ihre Datenbank muss dies tun. Welche Datenbank und welchen Spaltentyp verwenden Sie? –