2013-12-13 1 views
0

Я пытаюсь сделать больше смысла из-за ошибок нарушения ограничений, возникающих при сохранении транзакций в Hibernate.Есть ли способ перевести HibernateException на что-то еще, а затем на DataAccessException весной

Единственный способ я вижу, как мешать HibernateExceptions через PersistenceExceptionTranslator весной,

package org.springframework.dao.support; 

import org.springframework.dao.DataAccessException; 

public interface PersistenceExceptionTranslator { 

    DataAccessException translateExceptionIfPossible(RuntimeException ex); 

} 

, который переводит Hibernate исключения DataAccessExceptions, но это означает, что я должен буду наследовать мою иерархию исключений из DataAccessExceptions.

Есть ли другой естественный способ сделать это, не вводя DataAceessExceptions в иерархию наследования Exception?

ответ

1

Вы можете поймать HibernateException и повторно выдать его как проверяемого исключения из метода хранилища. Но тогда вам придется иметь дело с исключением в верхних слоях, но вы также можете просто выбросить его за пределы своего уровня кода.

+0

Не слишком приличный, PersistenceExceptionTranslator намного приятнее :) – mavarazy

+0

Я знаю, но вы попросили разное решение, поэтому я принес вам один :) Кроме того, вам не придется расширять 'DataAccessException' –

+0

Возможно, вы хотите использовать '@ ExceptionHandler'? См. Http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-exceptionhandlers –

Смежные вопросы