0

NoResultExceptionAspectJ を使用して a をキャッチし、代わりに 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 を散らかして null の結果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 に答える