J'ai un fichier de mappage qui spécifie une colonne donnée comme not-null="true"
. Ceci est une erreur car la colonne de la table est définie sur NULL
dans la base de données Oracle. Mais nous n'avons pas remarqué cela jusqu'à maintenant, plus d'un an après la création du fichier de mapping, parce que Hibernate a "ignoré" cela. Est-ce possible?saveOrUpdate de Hibernate ignore la propriété de la colonne not-null
Pour le rendre plus clair. Sur la base de données:
CREATE TABLE db.my_table
(...)
my_column NUMBER(10,0) NULL, (...)
sur le fichier de mapping:
<column name="MY_COLUMN" precision="10" scale="0" not-null="true">
Ensuite, le code Java:
getHibernateTemplate().saveOrUpdate(myEntity);
getHibernateTemplate().flush();
Ce code fonctionne sur notre environnement. A toujours été. Mais certains clients ont eu des problèmes de ot-null property references a null or transient value
et quand j'ai débogué le code cela n'avait aucun sens. Ce code ne devrait jamais pouvoir fonctionner, autant que je sache.
Bien sûr, il est simple de résoudre les problèmes des clients, je dois juste corriger le fichier de mappage afin qu'il représente correctement mon entité. Mais le vrai problème ici est pourquoi Hibernate ne s'en est-il pas plaint?
J'ai demandé à d'autres ingénieurs ici avec plus d'expérience sur Hibernate mais aucun d'eux n'a jamais vu ça.
Alors, quelqu'un peut-il donner un indice?
EDIT: Je veux juste souligner que la fois notre environnement de test et sont en cours d'exécution exactement le même code de mon client, et dans les deux cas, l'objet myEntity
a l'ensemble de la propriété myColumn
-NULL
. Donc, ce qui me laisse perplexe, c'est pourquoi il n'y a aucune exception ici sur notre environnement.
C'est un bug. Je suppose que chaque morceau de logiciel en a un. –
Ça sent sûrement comme un bug. Mais je me demande pourquoi cela n'arrive pas sur notre environnement, mais seulement sur nos clients. –