En utilisant JDO sur GAE, j'utilise un bloc de code de transaction de base de données simple comme ci-dessous.comment réessayer/récupérer à partir d'une exception java.sql.SQL: Modification simultanée
Quel est un bon moyen de réessayer/récupérer à partir d'une java.sql.SQLException levée: Modification simultanée?
private final Fournisseur pmp; ...
PersistenceManager pm = pmp.get(); try { pm.currentTransaction(). Begin();
MyObject myObject = pm.getObjectById (MyObject.class, id);
pm.currentTransaction(). Commit();
} finally {
si (pm.currentTransaction() isActive().) { log.severe (this.getClass() getName() + "exception DATABASE pris.".); pm.currentTransaction(). Rollback(); } }
Merci d'avoir suggéré de regarder de plus près la sémantique. En regardant de plus près la trace de la pile et les javadocs. L'exception est lancée à partir de commit() et l'exception java.sql est imbriquée dans une javax.jdo.JDODataStoreException qui est une sous-classe de JDOCanRetryException http://db.apache.org/jdo/api23/apidocs/ javax/jdo/JDODataStoreException.html Maintenant, existe-t-il un moyen d'attraper cette exception et réessayer l'opération sans exporter toutes les variables dans un seul bloc de paramètres? – Stevko
Je pense toujours que cette exception ne devrait pas être levée. Votre niveau de sérialisation est-il correctement défini? Vous ne pouvez pas essayer de valider jusqu'à currentTransaction(). IsActive()? – sibidiba