Comment puis-je insérer la valeur null dans un attribut Booléen lors de l'utilisation d'Hibernate?
J'ai une classe avec un attribut Booléen. Lorsque j'instancie et à la persistance de cette classe, l'attribut Booléen est stockée avec le "faux" de la valeur plutôt que de la prévisibles "null". Comment puis-je définir un attribut Booléen à "Null"?
Morte Rolo Pouvez-vous montrer votre classe et de sa cartographie ???
Ronald F D Garcia: C'est juste un @classe d'Entité avec une Colonne @attribut Booléen.
Votre base de données doit être faire cela. La base de données, et ce type de colonne utilisez-vous?
SQLServer tinyint null par défaut
Vous ne disposez peut-être en ce bug opensource.atlassian.com/projects/hibernate/browse/HHH-3716 Le rapport mentionne Sybase, mais SQLServer est un proche parent.
Ronald F D Garcia: C'est juste un @classe d'Entité avec une Colonne @attribut Booléen.
Votre base de données doit être faire cela. La base de données, et ce type de colonne utilisez-vous?
SQLServer tinyint null par défaut
Vous ne disposez peut-être en ce bug opensource.atlassian.com/projects/hibernate/browse/HHH-3716 Le rapport mentionne Sybase, mais SQLServer est un proche parent.
OriginalL'auteur Pedro Morte Rolo | 2010-06-01
Vous devez vous connecter pour publier un commentaire.
C'est un problème bizarre. Un
Boolean
attribut avec unnull
valeur est certainement censé être stockés commeNULL
et latinyint
type de colonne permet que. Je ne peut pas enquêter sur le problème moi-même, mais voici ce que je ferais:Tout d'abord, je voudrais activer la journalisation de Hibernate DML et de JBDC paramètres pour confirmer que Hibernate est réellement en passant
NULL
(et devrait). Les catégories concernées (chapitre 3.5. La journalisation) sontorg.hibernate.SQL
etorg.hibernate.type
.Si le premier test ne révèle pas le problème, je voudrais essayer de l'isoler davantage avec un simple test de la classe à l'aide de matières JDBC pour insérer un
Boolean
avec unnull
valeur (et aussi le lire). Si ce test n'est pas positif, alors je voudrais commencer à soupçonner le pilote JDBC.Ce pilote JDBC (et version) utilisez-vous en chemin? Si vous utilisez le pilote Microsoft, essayer avec la dernière version de jTDS (et inversement).
OriginalL'auteur Pascal Thivent
D'abord, assurez-vous que vous définissez un
Boolean
objet et non pas unboolean
type.Alors, si vous êtes en utilisant Hibernate avec JPA d'attributs, vous pouvez ajouter
@Column(nullable=true)
indiquer explicitement à Hibernate de la colonne doit avoir la valeur NULL comme valeur par défaut.Ce n'est pas de travail...
Qu'est-ce que le schéma de votre table? Est-il autoriser les valeurs NULL dans la colonne? En outre, vous pouvez essayer de déboguer le code lorsque vous créez une nouvelle instance. Peut-être que la valeur est initialisée à false dans votre code.
La valeur est explicitement initialisée à "null", le "schéma" représente cet attribut comme un tinyint avec null comme valeur par défaut
Avez-vous essayé de mettre votre Boolean valeur null comme valeur par défaut?
Boolean value = null;
OriginalL'auteur Marc
D'abord vous assurez-vous que l'objet que vous essayez de persister est de type Boolean n'est pas primitive de type boolean. Deuxièmement, vous pouvez définir la colonne correspondante en tant que char(1) qui peut contenir des 'Y', 'N' ou la valeur null. et enfin,et le plus important, ajoutez la ligne suivante à vous hibernate.cfg.xml :-
si u sont de l'utilisation d'hibernate.les propriétés de fichier, puis utilisez suivantes:-
ce serait vous aider à stocker des valeurs null à booléenne de type colonne. et n'oubliez pas de carte de la propriété type="boolean" dans le fichier de mappage.
OriginalL'auteur M.J.