我已经从使用Spring Data JPA转换为使用Entity Manager的常规DAO对象,并且发现,而不是返回null,而.getSingleResult()会抛出NoResultException。是否有一些方法可以使用Try {} Catch {}添加一个围绕所有DAO函数的方面,并返回null而不是NoResultExceptions?
或者是否有其他方法强制我的DAO对象返回null而不是异常而不手动包围所有这些对象?
答案 0 :(得分:3)
如果我是你,我会实现另一个实体管理器(继承自默认实体管理器),并且我用try / catch覆盖getSingleResult()以返回null。
然后,我将把我的新实体管理器注入我的Spring上下文。
答案 1 :(得分:2)
添加一个AroundAvice来执行DAO接口,捕获NRE并返回null。更简单,适用于任何JPA实现,并且不会破坏强制Query接口在没有找到结果时抛出NRE的JPA指定。