Обработка исключений Spring EntityManager Hibernate - PullRequest
1 голос
/ 30 января 2011

В проекте Spring, JPA, Hibernate я пытаюсь заставить работать обработку исключений.Для следующего кода:

    @Repository("mscoutService")
    public class MScoutServiceImpl implements MScoutService, Serializable {

        @PersistenceContext
        private EntityManager em;

...
        @Override
        @Transactional
        public void deleteMission(Long missionId) {
            try {
                Mission mis = em.find(Mission.class, missionId);
                em.remove(mis);
            } catch (Exception e) {
                handle_exception();
            }
        }

Я пытаюсь перехватить лежащие в основе исключения hibernate / jdbc / db (например, когда зависимые объекты все еще присутствуют, удаление завершится неудачно с помощью org.springframework.orm.hibernate3.HibernateJdbcException) и выполните некоторые действия.Однако код перехвата никогда не достигается (проверено в отладчике).

Я полагаю, это связано с тем, как Spring управляет этим, но я не знаю, как я могу перехватывать исключения во время em.remove () ...

Любая помощь приветствуется!

1 Ответ

4 голосов
/ 30 января 2011

Это потому, что исключение возникает, когда сеанс сбрасывается.И, возможно, он сбрасывается при фиксации транзакции - то есть с помощью весеннего прокси.Если вы хотите сбросить вручную, вы можете использовать entityManager.flush().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...