Spring将java.sql.SQLException转换为DataAccessException

时间:2011-06-17 15:11:40

标签: spring exception translate

喂。 由于我似乎无法在我的dao中使用spring DataAccessException转换机制,我想知道是否可以翻译

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

到DataAccessException层次结构。

亲切的问候 马西莫

1 个答案:

答案 0 :(得分:1)

如果您有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;
}

模仿它的行为: - )