0

我想使用 AspectJ 来捕获 aNoResultException并返回 null 。
(显然我是一个方面菜鸟)

这是执行查询的方法:

@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();

我有数百个这样的电话,我不想把每个电话都用 a 乱扔以将try/catch其更改NoResultException为空结果。

所以我想写一个方面来捕获异常并将结果更改为null.

这是方面代码(请注意我正在使用注释)。像这样的东西:

@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

如何将返回值更改为 null

4

1 回答 1

1

您是否尝试将方法更改为:

@Around("throwableMethod()")
public Object swallowThrowing(ProceedingJoinPoint pjp) {
    try {
        return pjp.proceed();
    } catch (NoResultException nre) {
        return null;
    }
}
于 2013-02-26T11:47:39.883 回答