Изключението:
Казва ни, че изключението от сесията се е случило преди точката, където този org.hibernate.AssertionFailure
се хвърля.
За да бъдем точни, org.hibernate.AssertionFailure
се хвърля, когато session.flush()
се случва, а не точката, където е възникнала грешката.
Горното е факт, следователно възможен извод от него е:нещо може да е потискащо оригиналното изключение.
Така че потърсетедруги възможни точки на грешка:save()
или saveOrUpdate()
вероятно се опитва да запази обект с null
полета където в таблицата колоната е NOT NULL
?
СЪВЕТ: За да помогнете при отстраняването на грешки, опитайте да добавите session.flush()
след всяко взаимодействие с Session
обект (напр. session.save(obj)
, session.merge(obj)
и т.н.), да се надяваме, че това ще доведе до org.hibernate.AssertionFailure
да се случи по-рано, по-близо до мястото, където се случва истинският проблем. (Разбира се, след отстраняването на грешки, премахнете тези session.flush()
.)
В моя случай, истинската изключение се извършваше в try/catch {}
блок, където catch
потисна изключението (не ме хвърли повторно или не ме предупреди за него).