Java Catch and Display SqlExceptionHelper - PullRequest
       4

Java Catch and Display SqlExceptionHelper

0 голосов
/ 23 января 2019

Использование Hibernate JPA для выполнения собственных запросов в БД Oracle из-за их сложности, Я хочу поймать исключение, например " ORA-01722: Nombre non valide ", выброшенное из SqlExceptionHelper класса, но то, что ловило, это:

класс javax.persistence.PersistenceException: не удалось извлечь ResultSet

Ошибка логгера, проследи меня, но не перехватил:

jdbc.spi.SqlExceptionHelper   : ORA-01722: Nombre non valide


BigDecimal customerId = null;
try {
    Query q = entityManager.createNativeQuery(
            "select acc.account_id as customerId from Account ...");
    customerId = (BigDecimal) q.getSingleResult();

} catch (Exception e) {

    logger.info("CLASS : " + e.getClass());
    if (e instanceof PersistenceException) {  // should display ORA-01722: Nombre non valide ?
        logger.info("ERRROR : " + e.getMessage());
        throw new SQLException(e.getMessage());
    }else
    if (e instanceof SQLException) {
        logger.info("ERRROR : " + e.getMessage());
        throw new SQLException(e.getMessage());
    }
    logger.info("NOOOOOOOOOOOOO : " + e.getMessage());
    throw new Exception(e.getMessage());
}

1 Ответ

0 голосов
/ 23 января 2019

SQLException передается в качестве аргумента в конструктор SQLGrammarException.

Вы можете перехватить это, извлечь корень и отобразить собственную ошибку sql или просто сбросить ее:

} catch (SQLGrammarException e) {
    logger.info("CLASS : " + e.getClass());
    throw e.getSQLException();
} catch (Exception e){
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...