Toto je definitivní zablokování situace. To souvisí spíše s chybou MySQL než s problémem hibernace s vašimi třídami. Nejprve si zopakujme definici zablokování :
Další informace naleznete na této stránce:http://en.wikipedia.org/wiki/Deadlock
Jak tuto situaci řešíte. No, musíte si přečíst následující článek:Deadlocks v InnoDB . Obsahuje většinu informací, které potřebujete. Tento článek podrobně vysvětluje, jak sledovat a vypořádat se s uváznutím, které si musíte přečíst.
V zásadě budete muset na základě výše uvedených informací provést následující kroky:
- Vytvořte trasování MySQL:Sledujte všechny dotazy spuštěné na serveru MySQL.
- Získejte informace o trasování uváznutí
- Porovnejte trasování mrtvého uzamčení a trasování MySQL, abyste určili příčinu mrtvého uzamčení.
Článek o InnoDB's má také seznam nápravných opatření, takže je zde nebudu opakovat. Mějte na paměti zablokování není to fatální chyba, jen ji musíte zvládnout. Takže možná chytit výjimku a opakovat transakci. Také se ujistěte, že vaše dotazy generované Hibernatem jsou optimální v tom smyslu, že používají indexy kde mohou atd. Další věc, kterou můžete zkusit, je dávkování transakce v režimu Hibernate a provedení v dávce .
Jsem si jistý, že se dvěma výše uvedenými odkazy budete schopni problém vyřešit a bude pro vás cennou zkušeností, jak se s tím vypořádat sami. Pokud najdete nějakou konkrétní položku, se kterou máte problémy, přidejte ji do otázky a pojďme se s tím vypořádat.