我想使用AspectJ来捕获NoResultException
并返回null
(显然我是一个Aspect noob)
以下是查询的方法:
@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();
我有几百个这样的电话,而且我不希望每个人都使用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
答案 0 :(得分:1)
您是否尝试将方法更改为:
@Around("throwableMethod()")
public Object swallowThrowing(ProceedingJoinPoint pjp) {
try {
return pjp.proceed();
} catch (NoResultException nre) {
return null;
}
}