Как мне перехватить исключение нарушения ограничения из EclipseLink?

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

Мой код выглядит так:

public void persist(Category category) {
    try {
        utx.begin();
        em.persist(category);
        utx.commit();
    } catch (RollbackException ex) {
           // Log something
    } catch (HeuristicMixedException ex) {
           // Log something
    } catch (HeuristicRollbackException ex) {
           // Log something
    } catch (SecurityException ex) {
           // Log something
    } catch (IllegalStateException ex) {
           // Log something
    } catch (NotSupportedException ex) {
           // Log something
    } catch (SystemException ex) {
           // Log something
    }
}

когдасохраняются () вызывается с объектом, который нарушает ограничение уникальности, я получаю взрыв исключений, которые перехватываются и регистрируются контейнером.

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504):
  org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: The statement
  was aborted because it would have caused a duplicate key value in a unique or 
  primary key constraint or unique index identified by 'SQL110911125638570' 
   defined on 'CATEGORY'.
 Error Code: -1
 (etc)

Я пробовал следующее:

    try {
        cc.persist(newCategory);        
    } catch (PersistenceException eee) {
        // Never gets here
        System.out.println("MaintCategory.doNewCateogry(): caught: " + eee);
    } catch (DatabaseException dbe) {
        // Never gets here neither
        System.out.println("MaintCategory.doNewCateogry(): caught: " + dbe);            
    }

Я понимаю, что использование DataBaseException непереносимо, но мне нужно с чего-то начать. Исключения никогда не ловятся. Какие-либо предложения?

Ответы на вопрос(5)

Ваш ответ на вопрос