Spring переводит java.sql.SQLException в DataAccessException - PullRequest
1 голос
/ 17 июня 2011

Hallo. Поскольку мне кажется, что я не могу использовать пружинный механизм перевода DataAccessException в моем дао, я хотел бы знать, возможно ли перевести

Internal Exception: java.sql.SQLException: [BEA][Oracle JDBC Driver][Oracle]ORA-00001: unique constraint (JSP_OWN.IDX_MC_CC_RAPPORTI_02) violated

в иерархию DataAccessException вручную.

С уважением Massimo

1 Ответ

1 голос
/ 11 января 2012

Если у вас есть JdbcTemplate, вы можете сделать

catch (SqlException e) {
  throw jdbcTemplate.getExceptionTranslator().translate("my task", null, e);
}

Если у вас нет JdbcTemplate, просто посмотрите на исходный код метода JdbcTemplate.getExceptionTranslator():

public synchronized SQLExceptionTranslator getExceptionTranslator() {
    if (this.exceptionTranslator == null) {
        DataSource dataSource = getDataSource();
        if (dataSource != null) {
            this.exceptionTranslator = new SQLErrorCodeSQLExceptionTranslator(dataSource);
        }
        else {
            this.exceptionTranslator = new SQLStateSQLExceptionTranslator();
        }
    }
    return this.exceptionTranslator;
}

И подражать его поведению: -)

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