sql >> Base de Datos >  >> RDS >> Oracle

SaveOrUpdate de Hibernate ignora la propiedad de columna no nula

Es un comportamiento absolutamente correcto.

El not-null atributo tiene dos significados:

  • admite herramientas de exportación de esquemas
  • verifique la Entidad en tiempo de ejecución (es decir, no verifique la configuración de la columna de la base de datos)

Consulte:5.1. Declaración de asignación , extracto:

Y 5.1.11. Propiedad , extracto:

Entonces, si sus clientes ejecutan algún código, que intente:

getHibernateTemplate().saveOrUpdate(myEntity);

mientras que myEntity falta alguna propiedad establecida como not-null="true" es correcto lanzar una excepción de tiempo de ejecución. Mientras esté en su entorno de prueba, lo más probable es que siempre establezca la propiedad en algunos no es un valor nulo.

E incluso hay una ventaja. La base de datos y la aplicación están débilmente acopladas. Entonces, si es necesario, puede hacer más restricciones en el lado de la aplicación, sin tocar la base de datos (por ejemplo, no está permitido)