To zdecydowany impas sytuacja. Jest to bardziej związane z błędem MySQL niż problemem hibernacji z twoimi klasami. Najpierw przejrzyjmy definicję impasu :
Zobacz tę stronę, aby uzyskać więcej informacji:http://en.wikipedia.org/wiki/Deadlock
Jak radzisz sobie z tą sytuacją. Cóż, musisz przeczytać następujący artykuł:Zakleszczenia w InnoDB . Zawiera większość potrzebnych informacji. Ten artykuł wyjaśnia szczegółowo, jak śledzić i radzić sobie z zakleszczeniami, które należy przeczytać.
Zasadniczo musisz wykonać następujące kroki w oparciu o powyższe informacje:
- Utwórz ślad MySQL:Śledź wszystkie zapytania uruchamiane na serwerze MySQL.
- Uzyskaj informacje o zakleszczeniu
- Połącz ze sobą ślad zakleszczenia i ślad MySQL, aby określić przyczynę zakleszczenia.
Artykuł na temat InnoDB zawiera również listę środków zaradczych, więc nie zamierzam ich tutaj powtarzać. Pamiętaj tylko o zakleszczeniu nie jest błędem krytycznym, wystarczy sobie z nim poradzić. Więc może złap wyjątek i ponów transakcję. Upewnij się również, że zapytania generowane przez Hibernate są optymalne w tym sensie, że używają indeksów gdzie mogą itp. Inną rzeczą, którą możesz spróbować, jest grupowanie transakcja w hibernacji i wykonywana wsadowo .
Jestem pewien, że dzięki dwóm powyższym linkom będziesz w stanie poradzić sobie z problemem i będzie to cenne doświadczenie, aby samodzielnie rozwiązać ten problem. Jeśli znajdziesz jakiś konkretny element, z którym masz problemy, dodaj go do pytania i zajmijmy się tym.