添加方面以捕获异常并返回null

时间:2012-02-15 06:50:23

标签: java spring jpa dao aspects

我已经从使用Spring Data JPA转换为使用Entity Manager的常规DAO对象,并且发现,而不是返回null,而.getSingleResult()会抛出NoResultException。是否有一些方法可以使用Try {} Catch {}添加一个围绕所有DAO函数的方面,并返回null而不是NoResultExceptions?

或者是否有其他方法强制我的DAO对象返回null而不是异常而不手动包围所有这些对象?

2 个答案:

答案 0 :(得分:3)

如果我是你,我会实现另一个实体管理器(继承自默认实体管理器),并且我用try / catch覆盖getSingleResult()以返回null。

然后,我将把我的新实体管理器注入我的Spring上下文。

答案 1 :(得分:2)

添加一个AroundAvice来执行DAO接口,捕获NRE并返回null。更简单,适用于任何JPA实现,并且不会破坏强制Query接口在没有找到结果时抛出NRE的JPA指定。