2013-02-26 5 views
0

Je veux utiliser AspectJ pour attraper un NoResultException et retourner null à la place.
(Il est évident que je suis un noob Aspect)AspectJ comment attraper une exception NoResultException et retourner null à la place

est ici la méthode qui fait l'interrogation:

@Override 
public Company getCompanyBySomeNumber(String someNumber) { 
    TypedQuery<Company> query = em.createQuery("select c from Company c where c.someNo = ?1", Company.class); 
    query.setParameter(1, someNumber); 
    return query.getSingleResult(); 

J'ai plusieurs centaines de ces appels et je ne veux pas la litière chacun avec try/catch pour remplacer le NoResultException par un résultat nul. Donc je veux écrire un aspect pour attraper l'exception et changer le résultat en null.

Voici le code aspect (veuillez noter que j'utilise des annotations). Quelque chose comme ceci:

@Aspect 
public class NullifyNoResultException { 

    @Pointcut("execution(my.namespace.where.the.queries.are * *Throwable(..))") 
    void throwableMethod() {} 

    @Around("throwableMethod()") 
    public void swallowThrowing(ProceedingJoinPoint pjp) { 
     try { 
      pjp.proceed(); 
     } catch (NoResultException nre) { 
      //TODO change the return value to null 

Comment puis-je modifier la valeur de retour à null

Répondre

1

Avez-vous essayé de changer votre méthode:

@Around("throwableMethod()") 
public Object swallowThrowing(ProceedingJoinPoint pjp) { 
    try { 
     return pjp.proceed(); 
    } catch (NoResultException nre) { 
     return null; 
    } 
} 
Questions connexes