sql >> Databasteknik >  >> RDS >> Mysql

org.hibernate.AssertionFailure:null id i posten (spola inte sessionen efter att ett undantag inträffat)

Undantaget:

Berättar för oss att sessionundantaget har inträffat före punkten där denna org.hibernate.AssertionFailure kastas.

För att vara exakt, org.hibernate.AssertionFailure kastas när session.flush() händer, inte den punkt där felet uppstod.

Ovanstående är ett faktum, så en möjlig slutsats från det är:något kan vara undertryckande det ursprungliga undantaget.

Så leta efter annat möjliga felpunkter:En save() eller saveOrUpdate() möjligen försöker bevara en enhet med en null fält där kolumnen i tabellen är NOT NULL ?

TIPS: För att hjälpa till med felsökningen, försök att lägga till en session.flush() efter varje interaktion med Session objekt (t.ex. session.save(obj) , session.merge(obj) , etc.), kommer detta förhoppningsvis att orsaka org.hibernate.AssertionFailure att hända tidigare, närmare där det verkliga problemet äger rum. (Naturligtvis, efter felsökningen, ta bort dessa session.flush() .)


I mitt fall, den riktiga undantaget ägde rum i en try/catch {} block där catch undertryckte undantaget (kastade inte om eller varnade mig för det).



  1. Infoga flera rader i en tabell med PHP

  2. Oracle SQL Injection Block med DBMS_ASSERT

  3. MySQL - tvinga att inte använda cache för att testa frågans hastighet

  4. mysql välj lägsta pris från multi select