use of org.seasar.doma.jdbc.SqlExecutionException in project doma-spring-boot by domaframework.
the class DomaPersistenceExceptionTranslator method translateExceptionIfPossible.
@Override
public DataAccessException translateExceptionIfPossible(RuntimeException ex) {
if (!(ex instanceof JdbcException)) {
// Fallback to other translators if not JdbcException
return null;
}
if (ex instanceof OptimisticLockException) {
return new OptimisticLockingFailureException(ex.getMessage(), ex);
} else if (ex instanceof UniqueConstraintException) {
return new DuplicateKeyException(ex.getMessage(), ex);
} else if (ex instanceof NonUniqueResultException || ex instanceof NonSingleColumnException) {
return new IncorrectResultSizeDataAccessException(ex.getMessage(), 1, ex);
} else if (ex instanceof NoResultException) {
return new EmptyResultDataAccessException(ex.getMessage(), 1, ex);
} else if (ex instanceof UnknownColumnException || ex instanceof ResultMappingException) {
return new TypeMismatchDataAccessException(ex.getMessage(), ex);
}
if (ex.getCause() instanceof SQLException) {
SQLException e = (SQLException) ex.getCause();
String sql = null;
if (ex instanceof SqlExecutionException) {
sql = ((SqlExecutionException) ex).getRawSql();
}
DataAccessException dae = translator.translate(ex.getMessage(), sql, e);
return (dae != null ? dae : new UncategorizedSQLException(ex.getMessage(), sql, e));
}
return new UncategorizedDataAccessException(ex.getMessage(), ex) {
};
}
use of org.seasar.doma.jdbc.SqlExecutionException in project doma by domaframework.
the class SelectCommand method execute.
@Override
public RESULT execute() {
Supplier<RESULT> supplier = null;
Connection connection = JdbcUtil.getConnection(query.getConfig().getDataSource());
try {
PreparedStatement preparedStatement = JdbcUtil.prepareStatement(connection, sql);
try {
log();
setupOptions(preparedStatement);
bindParameters(preparedStatement);
supplier = executeQuery(preparedStatement);
} catch (SQLException e) {
Dialect dialect = query.getConfig().getDialect();
throw new SqlExecutionException(query.getConfig().getExceptionSqlLogType(), sql, e, dialect.getRootCause(e));
} finally {
close(supplier, () -> JdbcUtil.close(preparedStatement, query.getConfig().getJdbcLogger()));
}
} finally {
close(supplier, () -> JdbcUtil.close(connection, query.getConfig().getJdbcLogger()));
}
return supplier.get();
}
use of org.seasar.doma.jdbc.SqlExecutionException in project doma by domaframework.
the class ModifyCommand method execute.
@Override
public Integer execute() {
if (!query.isExecutable()) {
JdbcLogger logger = query.getConfig().getJdbcLogger();
logger.logSqlExecutionSkipping(query.getClassName(), query.getMethodName(), query.getSqlExecutionSkipCause());
return 0;
}
Connection connection = JdbcUtil.getConnection(query.getConfig().getDataSource());
try {
PreparedStatement preparedStatement = prepareStatement(connection);
try {
log();
setupOptions(preparedStatement);
bindParameters(preparedStatement);
return executeInternal(preparedStatement);
} catch (SQLException e) {
Dialect dialect = query.getConfig().getDialect();
throw new SqlExecutionException(query.getConfig().getExceptionSqlLogType(), sql, e, dialect.getRootCause(e));
} finally {
JdbcUtil.close(preparedStatement, query.getConfig().getJdbcLogger());
}
} finally {
JdbcUtil.close(connection, query.getConfig().getJdbcLogger());
}
}
use of org.seasar.doma.jdbc.SqlExecutionException in project doma by domaframework.
the class ModuleCommand method execute.
@Override
public RESULT execute() {
Connection connection = JdbcUtil.getConnection(query.getConfig().getDataSource());
try {
CallableStatement callableStatement = JdbcUtil.prepareCall(connection, sql);
try {
log();
setupOptions(callableStatement);
bindParameters(callableStatement);
return executeInternal(callableStatement);
} catch (SQLException e) {
Dialect dialect = query.getConfig().getDialect();
throw new SqlExecutionException(query.getConfig().getExceptionSqlLogType(), sql, e, dialect.getRootCause(e));
} finally {
JdbcUtil.close(callableStatement, query.getConfig().getJdbcLogger());
}
} finally {
JdbcUtil.close(connection, query.getConfig().getJdbcLogger());
}
}
Aggregations