sql >> Database >  >> RDS >> Mysql

org.hibernate.AssertionFailure:null id in entry (flush de sessie niet nadat er een uitzondering is opgetreden)

De uitzondering:

Vertelt ons dat de sessie-uitzondering voor . heeft plaatsgevonden het punt waar deze org.hibernate.AssertionFailure wordt gegooid.

Om precies te zijn, de org.hibernate.AssertionFailure wordt gegenereerd wanneer de session.flush() gebeurt, niet het punt waar de fout optrad.

Het bovenstaande is een feit, dus een mogelijke conclusie daaruit is:iets kan onderdrukkend zijn de oorspronkelijke uitzondering.

Dus zoek naar andere mogelijke foutpunten:Een save() of saveOrUpdate() is mogelijk probeert een entiteit te behouden met een null veld waarbij in de tabel de kolom NOT NULL is ?

TIP: Probeer een session.flush() . toe te voegen om te helpen bij het debuggen na elke interactie met de Session object (bijv. session.save(obj) , session.merge(obj) , etc.), zal dit hopelijk de org.hibernate.AssertionFailure veroorzaken eerder gebeuren, dichter bij waar het echte probleem zich voordoet. (Natuurlijk, na het debuggen, verwijder die session.flush() .)


In mijn geval de echte uitzondering vond plaats in een try/catch {} blok waar de catch de uitzondering onderdrukt (heeft me er niet voor gewaarschuwd of me ervoor gewaarschuwd).



  1. Cassandra maskeren met IRI FieldShield

  2. Kan ingevoegde gegevens van MySQL niet onmiddellijk zien

  3. Hoe kan ik niet-ASCII-tekens vinden in MySQL?

  4. PHP/MySQL:beste praktijken voor geldtransacties/opslag?