これは明確なデッドロックです 状況。これは、クラスのHibernateの問題よりもMySQLエラーに関連しています。まず、デッドロックの定義を確認しましょう。 :
詳細については、次のページを参照してください: http://en.wikipedia.org/wiki/Deadlock >
この状況にどのように対処しますか。さて、あなたは次の記事を読む必要があります:InnoDBのデッドロック 。必要な情報のほとんどが含まれています。この記事では、必読のデッドロックを追跡して対処する方法について詳しく説明します。
基本的に、上記の情報に基づいて次の手順を実行する必要があります。
- MySQLトレースの作成:MySQLサーバーで実行されているすべてのクエリをトレースします。
- デッドロックトレース情報を取得する
- デッドロックトレースとMySQLトレースを相互に照合して、デッドロックの原因を特定します。
InnoDBの記事にも救済策のリストがあるので、ここで繰り返すつもりはありません。 デッドロックを覚えておいてください 致命的なエラーではありません。処理する必要があります。したがって、例外をキャッチしてトランザクションを再試行する可能性があります。また、Hibernateによって生成されるクエリが、インデックスを使用しているという意味で最適であることを確認してください。 どこでできるかなど。もう1つ試すことができるのは、バッチ処理です。 Hibernateでのトランザクションとバッチでの実行 。
上記の2つのリンクを使用すると、問題を処理できると確信しており、これを自分で解決することは貴重な経験になります。問題がある特定のアイテムを見つけたら、それを質問に追加して対処しましょう。