Проблема при попытке использовать SQLException при обработке фиксации в спящем режиме - PullRequest
0 голосов
/ 21 июня 2019

Ад. Я пытаюсь выяснить ошибку исключения коммита при выполнении весеннего пакетного задания. Я работаю над добавлением исключения SQL к нашей обработке фиксации в Hibernate, потому что обычное исключение не кажется полезным. Вот код, который у меня сейчас есть:

    if (editRollBackNeeded) {
        try {
            hibernateTransaction.setRollbackOnly();
            hibernateTransaction.rollback();
            returnCode = 16;
            logger.info(" ");
            logger.info("RECORD EDIT ERROR " + "ROLLBACK OCCURRED - INVESTIGATE");
            logger.info(" ");
            message = message + " " + System.lineSeparator() 
                              + "RECORD EDIT ERROR " + "ROLLBACK OCCURRED - INVESTIGATE " + System.lineSeparator();
            terminateProcess(returnCode, message)  ;   
        } catch (Exception rollbackE) {
            logger.info("ROLLBACK EXCEPTION " + rollbackE.getMessage() + " OCCURRED - INVESTIGATE");
            message = message + " " + System.lineSeparator() 
                              + "ROLLBACK EXCEPTION WAS " + rollbackE.getMessage() + System.lineSeparator() 
                              + " " + System.lineSeparator();
        }
    } else {
        try {
            hibernateTransaction.commit();
        } catch (SQLException commitExcep) { 
            commitExcep.printStackTrace(pw);  
            logger.info("COMMIT EXCEPTION WAS " + sw.toString());
            logger.debug("COMMIT LOCAL MESSAGE " + Arrays.asList(commitExcep.getLocalizedMessage()));
            logger.info(sw.toString()) ;
            message = message + " " + System.lineSeparator() 
                              + "COMMIT EXCEPTION WAS " + sw.toString() + System.lineSeparator() 
                               + " " + System.lineSeparator();
            if (hibernateTransaction != null) {
                try {
                    hibernateTransaction.rollback();
                    returnCode = 16;
                    logger.info("SQL ERROR " + "ROLLBACK OCCURRED - INVESTIGATE");
                    logger.info(" ");
                    message = message + " " + System.lineSeparator() 
                                      + "SQL ERROR " + "ROLLBACK OCCURRED - INVESTIGATE " + System.lineSeparator();
                } catch (Exception rollbackE) {
                    logger.info("ROLLBACK EXCEPTION " + rollbackE.getMessage() + " OCCURRED - INVESTIGATE");
                    returnCode = 16;
                    terminateProcess(returnCode, message)  ;

                }

            } else {
            }
        }
    }

Он находится в части AfterStep пакета Spring. Я выбрасываю все исключения, особенно исключения SQL. Я получаю сообщение об ошибке компиляции, в котором говорится, что «SQLExecution никогда не добавляется в тело соответствующего оператора try». На самом деле я не понимаю этого, так как у меня есть эта ошибка.

Спасибо

1 Ответ

1 голос
/ 21 июня 2019

Hibernates Метод класса транзакции commit () генерирует HibernateException, а не SQLException. Так что измени свой улов на HibernateException.

...