Rouleau de transaction après l'exception de JPA + Ressort

Je suis en utilisant Spring et JPA HIbernate-dessous. Lorsqu'un PersistenceException est jeté, j'ai envie de l'attraper et renvoyer le message d'erreur alors qu'il n'est pas propagé à l'appelant.

@Transactional
public String save(Object bean) {
    String error = null;

    try {
        EntityManager entityManager = getEntityManager();

        for (int i = 0, n = entities.size(); i < n; i ++) {
            entityManager.merge(entities.get(i));
        }
    }
    catch (PersistenceException e) {
        error = e.getMessage();
    }

    return error;
}

Mais j'obtiens une exception en disant que javax.persistence.RollbackException: Transaction marked as rollbackOnly. - je obtenir que la transaction doit être annulée après une exception, mais comment puis-je rouler en arrière quand j'ai attrapé l'exception et ne veux pas re-jeter?

OriginalL'auteur Tom Tucker | 2011-02-22