Printemps CrudRepository exceptions
J'ai ce Printemps de Données CrudRepository
qui gère les opérations CRUD sur une DB.
@Repository
public interface IUserRepository extends CrudRepository<User, String> {
}
User
est l'Entité de l'Utilisateur table des ma DB. CrudRepository
ajoute à savoir les opérations suivantes du référentiel:
delete(String ID)
findOne(String ID)
save(User user)
Comme indiqué dans le la documentation, les supprimer et les opérations de recherche de jeter IllegalArgumentException
dans le cas où l'id est null lors de l'opération d'enregistrement ne lance pas d'exception.
Le problème est que la javadoc de la CrudRepository ne fait aucune mention sur les autres exceptions levées par ces opérations. Par exemple, il ne dit pas que le delete(String ID)
opération jette un EmptyResultDataAccessException
dans le cas où la condition de l'ID n'existe pas dans la DB.
Dans la javadoc de la save(User user)
opération, il n'est pas clair quelles exceptions sont jetés dans le cas de l'insertion d'un nouvel Utilisateur qui brise une contrainte d'intégrité des données (sur les champs uniques et les clés étrangères). En outre, il ne vous avertit si vous êtes l'écriture d'une nouvelle ou existante de l'Utilisateur: il crée un nouvel Utilisateur ou écrase si existant (c'est donc un Insert + opération de mise à Jour).
Dans une application d'entreprise, je devrais être capable d'attraper tous les throwable exception d'une opération peut jeter et que je devrais lire à ce sujet dans le fonctionnement de la javadoc.
Connaissez-vous une documentation claire sur CrudRepository exceptions?
Merci
OriginalL'auteur gvdm | 2014-04-27
Vous devez vous connecter pour publier un commentaire.
Printemps a intégré exception mécanisme de traduction, de sorte que toutes les exceptions levées par les fournisseurs de persistance JPA sont convertis en Printemps DataAccessException - pour tous les haricots annotée avec @Référentiel (ou configuré).
Il y a quatre groupes principaux -
NonTransientDataAccessException - ce sont les exceptions où une nouvelle tentative de la même opération échoue à moins que la cause de l'Exception est corrigé. Donc, si vous passez non existant id par exemple, il ne pourra pas, sauf si l'id existe dans la base de données.
RecoverableDataAccessException - ce sont les "en face" de la précédente - les exceptions qui sont récupérables après quelques étapes de récupération. Plus de détails dans l'API docs
ScriptException - SQL exceptions, lorsque vous essayez de processus ne sont pas bien formés script par exemple.
TransientDataAccessException - ces sont l'exception, lorsque la récupération est possible, sans aucune explicite étape, par exemple quand il y a un délai d'attente de la base de données, vous êtes de réessayer après quelques secondes.
Cela dit, l'endroit idéal pour trouver de la documentation sur toutes les exceptions - est dans l'API elle-même - il suffit d'aller à travers la hiérarchie de DataAccessException.
qu'entendez-vous par "intégré exception mécanisme de traduction". Je suis curieux de savoir pourquoi le printemps documentation n'est pas dit explicitement que certaines méthodes de se débarrasser de cette DataAccessException, par exemple enregistrer la méthode de CrudRepository classe.
OriginalL'auteur vtor