3

我已经从使用 Spring Data JPA 切换到带有实体管理器的常规 DAO 对象,并发现 .getSingleResult() 不是返回 null,而是抛出 NoResultException。有没有办法添加一个方面,用 Try {} Catch{} 包围所有 DAO 函数并返回 null 而不是 NoResultExceptions?

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

4

2 回答 2

3

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

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

于 2012-02-15T08:16:33.653 回答
2

添加一个 AroundAvice 来执行你的 DAO 接口,捕获 NRE 并返回 null。更容易,将与任何 JPA 实现一起使用,并且不会破坏 JPA 规范,该规范会在未找到结果时强制 Query 接口抛出 NRE。

于 2012-02-15T12:33:32.603 回答