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

org.hibernate.AssertionFailure :identifiant nul dans l'entrée (ne videz pas la session après qu'une exception se soit produite)

L'exception :

Nous indique que l'exception de session s'est produite avant le point où ce org.hibernate.AssertionFailure est lancé.

Pour être exact, le org.hibernate.AssertionFailure est lancé lorsque la session.flush() se passe, pas le point où l'erreur s'est produite.

Ce qui précède est un fait, donc une conclusion possible est :quelque chose pourrait être supprimant l'exception d'origine.

Alors cherchez autre points d'erreur possibles :A save() ou saveOrUpdate() essaie peut-être de conserver une entité avec un null champ où, dans le tableau, la colonne est NOT NULL ?

CONSEIL : Pour aider au débogage, essayez d'ajouter un session.flush() après chaque interaction avec la Session objet (par exemple session.save(obj) , session.merge(obj) , etc.), cela entraînera, espérons-le, le org.hibernate.AssertionFailure se produire plus tôt, plus près de l'endroit où se situe le vrai problème. (Bien sûr, après le débogage, supprimez ces session.flush() .)


Dans mon cas, le vrai l'exception se produisait dans un try/catch {} bloc où le catch a supprimé l'exception (n'a pas relancé ou ne m'a pas averti à ce sujet).