Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

org.hibernate.AssertionFailure:id nulo na entrada (não libere a sessão após ocorrer uma exceção)


A exceção:

Informa que a exceção de sessão ocorreu antes o ponto onde este org.hibernate.AssertionFailure é lançado.

Para ser exato, o org.hibernate.AssertionFailure é lançado quando o session.flush() está acontecendo, não o ponto onde o erro ocorreu.

O acima é um fato, portanto, uma possível conclusão é:algo pode estar suprimindo a exceção originária.

Procure por outros possíveis pontos de erro:A save() ou saveOrUpdate() está possivelmente tentando persistir uma entidade com um null campo onde, na tabela, a coluna é NOT NULL ?

DICA: Para ajudar na depuração, tente adicionar um session.flush() após cada interação com a Session objeto (por exemplo, session.save(obj) , session.merge(obj) , etc.), esperamos que isso cause o erro org.hibernate.AssertionFailure acontecer mais cedo, mais perto de onde o problema real está ocorrendo. (Claro, após a depuração, remova aqueles session.flush() .)


No meu caso, o real exceção estava ocorrendo dentro de um try/catch {} bloco onde o catch suprimiu a exceção (não relançou ou me avisou sobre isso).