Questo è un preciso stallo situazione. Questo è più correlato a un errore MySQL che a un problema di ibernazione con le tue classi. Per prima cosa esaminiamo la definizione di stallo :
Vedere questa pagina per ulteriori informazioni:http://en.wikipedia.org/wiki/Deadlock
Come affronti questa situazione. Bene, devi leggere il seguente articolo:Deadlocks in InnoDB . Contiene la maggior parte delle informazioni di cui hai bisogno. Questo articolo spiega in dettaglio come tracciare e gestire i deadlock, è assolutamente da leggere.
In sostanza, dovrai eseguire i seguenti passaggi in base alle informazioni di cui sopra:
- Crea una traccia MySQL:traccia tutte le query eseguite sul server MySQL.
- Ottieni le informazioni sulla traccia del deadlock
- Abbina la traccia dead lock e la traccia MySQL tra loro per determinare la causa del deadlock.
L'articolo su InnoDB ha anche un elenco di rimedi, quindi non li ripeterò qui. Tieni solo a mente punti di stallo non è un errore fatale, devi solo gestirlo. Quindi forse prendi l'eccezione e riprova la transazione. Assicurati inoltre che le query generate da Hibernate siano ottimali, nel senso che utilizzano indici dove possono ecc. Un'altra cosa che potresti provare è batching la transazione su Hibernate e l'esecuzione in batch .
Sono sicuro che con i due link sopra sarai in grado di gestire il problema e sarà un'esperienza preziosa per te risolverlo da solo. Se trovi qualche oggetto in particolare con cui hai problemi aggiungilo alla domanda e affrontiamolo.