Добавление аспекта, чтобы поймать исключение и вернуть вместо него ноль - PullRequest
2 голосов
/ 15 февраля 2012

Я перешел от использования Spring Data JPA для обычных объектов DAO с Entity Manager и обнаружил, что вместо возврата null метод .getSingleResult () генерирует исключение NoResultException. Есть ли способ добавить аспект, который бы окружал все функции DAO с помощью Try {} Catch {} и возвращал ноль вместо NoResultExceptions?

Или есть какой-то другой способ заставить мои объекты DAO возвращать ноль вместо исключений, не окружая их вручную?

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

На вашем месте я бы реализовал другой Entity Manager (который наследует от стандартного), и я бы переопределил getSingleResult () с помощью метода try / catch, чтобы вернуть ноль.

Затем я добавлю свой новый Entity Manager в мой контекст Spring.

2 голосов
/ 15 февраля 2012

Добавьте AroundAvice к выполнению вашего интерфейса DAO, перехватите NRE и верните null.Проще, будет работать с любой реализацией JPA и не нарушать спецификацию JPA, которая заставляет интерфейс Query генерировать NRE, когда результаты не найдены.

...