Tengo una clase con un atributo booleano. Cuando instancia y persisto esta clase, el atributo booleano se almacena con el valor "falso" en lugar del "nulo" esperado. ¿Cómo puedo establecer un atributo booleano en "Nulo"?¿Cómo inserto el valor nulo en un atributo booleano cuando uso Hibernate?
Respuesta
Este es un problema raro. Se supone que un atributo Boolean
con un valor null
se almacena como NULL
y el tipo de columna tinyint
lo permite. No puedo investigar el problema yo mismo, pero esto es lo que haría:
Primero, activaría el registro de las declaraciones DML de Hibernate y de los parámetros de JBDC para confirmar que Hibernate realmente está pasando NULL
(y debería). Las categorías relevantes (capítulo 3.5. Logging) son org.hibernate.SQL
y org.hibernate.type
.
Si la primera prueba no revela el problema, trataría de aislarlo aún más con una clase de prueba simple utilizando JDBC sin procesar para insertar un valor Boolean
con null
(y también lo leí). Si esta prueba no es positiva, entonces comenzaría a sospechar del controlador JDBC.
¿Qué controlador JDBC (y versión) está utilizando por cierto? Si está utilizando el controlador de Microsoft, intente con la última versión de jTDS (e inversamente).
Primero, asegúrese de definir un objeto Boolean
y no un tipo boolean
.
Luego, si está utilizando Hibernate con atributos JPA, puede agregar @Column(nullable=true)
para decirle explícitamente a Hibernate que la columna debe tener NULL como valor predeterminado.
atributo nullable es, de manera predeterminada, verdadero –
Esto no funciona ... –
¿Cuál es el esquema de su tabla? ¿Permite valores NULL en esa columna? Además, puede intentar depurar el código donde crea una nueva instancia. Tal vez el valor se inicializa a falso en tu código. – Marc
Primero se asegura de que el objeto que intenta persistir sea Booleano no primitivo booleano. En segundo lugar, puede definir la columna correspondiente como char (1) que puede contener 'Y', 'N' o valor nulo. y por último, y lo más importante añadir la siguiente línea al que hibernate.cfg.xml: -
<property name="query.substitutions">'Y'=true,'N'=false</property>
si u está utilizando hibernate.properties archivo a continuación, utilizar lo siguiente: -
hibernate.query.substitutions true 'Y', false 'N'
esto ayudaría Saliste para almacenar valores nulos en la columna de tipo booleano. y no olvide mapear la propiedad como type = "boolean" en el archivo de mapeo.
- 1. ¿Cómo inserto un valor aleatorio en mysql?
- 2. ¿Cómo crear un valor booleano?
- 3. Imprimir el valor de un valor booleano en Log
- 4. ¿Cómo puedo obtener el valor de la clave principal cuando inserto un nuevo registro?
- 5. Cómo obtener el valor booleano del objeto
- 6. MySQL booleano - volteando el valor?
- 7. ¿Cómo almacenar un valor booleano en un NSArray?
- 8. operador | = para un valor booleano en C++
- 9. ¿Cuál es el valor booleano predeterminado en C#?
- 10. Cómo verificar el valor nulo en NSNumber
- 11. Cómo comprobar el valor nulo en java
- 12. ¿Es posible almacenar el valor nulo de un atributo enumerado en la base de datos?
- 13. valor booleano de objetos en Python
- 14. Elastic Search/Tire: ¿Cómo se filtra un atributo booleano?
- 15. Insertar valor predeterminado cuando se inserta nulo
- 16. Almacenar valor booleano en SQLite
- 17. @ Objetos autoajustados obteniendo un valor nulo
- 18. Comprobación de la base de datos para el valor booleano NULO
- 19. ¿Cómo uso un valor nulo en un doble en VB.Net 2010?
- 20. ¿Cómo uso un operador booleano en una declaración de caso?
- 21. ¿Cómo devolver un valor booleano desde una función en MySQL?
- 22. android-java: comprobar el valor booleano para comprobar nula
- 23. .sum maravilloso []() devuelve un valor nulo cuando espero 0
- 24. el método hibernate query.list() devuelve la lista vacía en lugar del valor nulo
- 25. ¿Cómo se imprime el valor booleano en Go?
- 26. ¿Cómo alterar el valor booleano en SQL Server select query?
- 27. sql booleano truth test: cero O nulo
- 28. comprobando el valor booleano de Diccionario.
- 29. ¿Valor nulo en datetime_select?
- 30. ¿Por qué no puedo actualizar el valor booleano del atributo de mi entidad de datos central?
Morte Rolo ¿Puedes mostrar tu clase y su mapeo? –
@Arthur Ronald F D Garcia: Es solo una clase @Entity regular con un atributo @Column Boolean. –
Su base de datos debe estar haciendo esto. ¿Qué base de datos y qué tipo de columna estás usando? –