Oracle
 sql >> Base de données >  >> RDS >> Oracle

saveOrUpdate d'Hibernate ignore la propriété de colonne non nulle

C'est un comportement absolument correct.

Le not-null l'attribut a deux significations :

  • supporte les outils d'exportation de schéma
  • vérifiez l'entité dans l'exécution (c'est-à-dire ne vérifiez pas le paramètre de colonne de la base de données)

Voir :5.1. Déclaration de mappage , extrait :

Et 5.1.11. Propriété , extrait :

Donc, si vos clients exécutent du code, qui essaie :

getHibernateTemplate().saveOrUpdate(myEntity);

tandis que myEntity il manque une propriété définie comme not-null="true" il est correct de lancer une exception d'exécution. Dans votre environnement de test, vous définissez probablement toujours la propriété sur some valeur non nulle.

Et il y a même un avantage. La base de données et l'application sont faiblement couplées. Donc, si nécessaire, vous pouvez faire plus de contraintes du côté de l'application, sans toucher à la base de données (par exemple, vous n'êtes pas autorisé)