Mysql
 sql >> база данни >  >> RDS >> Mysql

org.hibernate.AssertionFailure:нулев идентификатор в записа (не изтривайте сесията след възникване на изключение)

Изключението:

Казва ни, че изключението от сесията се е случило преди точката, където този 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 потисна изключението (не ме хвърли повторно или не ме предупреди за него).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добър дизайн на база данни, променлив брой атрибути

  2. 4 начина за намиране на дублиращи се редове в MySQL

  3. Mysql подобрява скоростта на SELECT

  4. каква е употребата на опцията за пул в база данни.yml

  5. процентил по COUNT(DISTINCT) с корелиран WHERE работи само с изглед (или без DISTINCT)