Exception "org.hibernate.exception.LockAcquisitionException: n'a pas pu insérer" apparaît parfois dans le code suivant:exception Hibernate: impasse
Question questionClone;
try {
questionClone = (Question) question.clone();
} catch (CloneNotSupportedException e) {
throw WrappedException.wrap(e);
}
questionClone.setCategory(question.getCategory());
questionClone.setOriginal(false);
logger.trace("Saving questionClone " + questionClone + " start");
hibernateSession.save(questionClone);
logger.trace("Saving questionClone " + questionClone + " end");
lorsque questionClone est enregistré. Voici la méthode clone pour la question:
public Object clone() throws CloneNotSupportedException {
Question questionClone = (Question) super.clone();
questionClone.category = null;
List<Alternative> alternativesClone = new ArrayList<Alternative>(getInternalAlternatives().size());
int index = 0;
for (Iterator<Alternative> iterator = getInternalAlternatives().iterator(); iterator.hasNext();) {
Alternative alternative = iterator.next();
Alternative alternativeClone = (Alternative) alternative.clone();
alternativeClone.setQuestion(questionClone);
alternativeClone.setIndex(index);
alternativesClone.add(alternativeClone);
++index;
}
questionClone.setInternalAlternatives(alternativesClone);
return questionClone;
}
et méthode clone pour Alternative:
mappingpublic Object clone() throws CloneNotSupportedException {
Alternative alternativeClone = (Alternative) super.clone();
alternativeClone.index = 0;
alternativeClone.question = null;
return alternativeClone;
}
Mise en veille prolongée de la question contient ceci:
<list name="internalAlternatives" inverse="true" cascade="all-delete-orphan">
<cache usage="read-write"/>
<key column="QUESTION_ID"/>
<list-index column="INDEX"/>
<one-to-many class="Alternative"/>
</list>
Exception indique qu'il ne peut pas insérer une alternative et provoqué par: com.ibm.db2.jcc.am.SqlTransactionRollbackException: Erreur SQL DB2: SQLCODE = -911, SQLSTATE = 40001, SQLERRMC = 2, DRIVER = 4.14.88. Comme je l'ai découvert, c'était une impasse. Quelqu'un peut-il aider avec ceci?
Les questions sont clonées lorsque l'utilisateur démarre le test. Cela peut-il être dû au fait que plusieurs utilisateurs ont commencé le test en même temps? Pour chaque utilisateur, la session de test individuelle est créée. –