Hibernate - comment attraper “l'intégrité de la violation de la contrainte: contrainte unique ou de l'indice de violation”
Dans ma table j'ai une contrainte unique.
En mode veille prolongée, lorsque j'ajoute un élément qui viole cette contrainte, je veux l'attraper, Elle sera mise à jour au lieu de créer un élément.
Lorsque j'ai mis aucun bloc try-catch autour de
updated = query.executeUpdate();
il obtient l'erreur suivante
Caused by: org.hsqldb.HsqlException: integrity constraint violation: unique constraint or index violation: WEEKROOSTERITEMUNI
Lorsque j'ai mis la suite de bloc try-catch
try {
updated = query.executeUpdate();
}
catch(PersistenceException e){
LOG.debug("this is PersistenceException exception throw");
}
il obtient l'erreur suivante
Caused by: javax.persistence.RollbackException: Transaction marked as rollbackOnly
Quand je attraper "ConstraintViolationException" - je continuer à recevoir la contrainte d'exception, il n'a pas d'attraper quoi que ce soit.
Caused by: org.hsqldb.HsqlException: integrity constraint violation: unique constraint or index violation: WEEKROOSTERITEMUNI
Comment puis-je attraper cette?
Suggérer de passer par ce lien dans la [Lien][1] [1]: stackoverflow.com/questions/2167730/...
OriginalL'auteur Ken Vernaillen | 2013-11-14
Vous devez vous connecter pour publier un commentaire.
Pour attraper contrainte unique vous devez attraper cette exception ConstraintViolationException
Avez-vous essayer d'attraper HibernateException?
Je peux l'attraper avec un DataIntegrityViolationException exception
OriginalL'auteur mvb13
La
RollbackException
est renvoyée à un niveau plus élevé car@Transactional
est définie dans cette plus de levier, de sorte que vous ne pouvez pas l'attraper sur ce niveau. Vous avez besoin de l'attraper dans la couche de votre transaction.Une meilleure façon est de vérifier si l'objet existe déjà dans la base de données de la couche. Une vérification de la fonction.
Que la fonction de contrôle est un get par les contraintes. C'est mieux parce que vous n'avez pas besoin de capturer des exceptions.
Vous avez déjà besoin que la fonction de l'objet, parce que, plus tard, vous souhaitez fusionner cet objet. Vous ne voulez pas fusionner une instance détachée.
OriginalL'auteur Ken Vernaillen