Search in sources :

Example 1 with UniqueConstraintException

use of org.seasar.doma.jdbc.UniqueConstraintException 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) {
    };
}
Also used : NonUniqueResultException(org.seasar.doma.jdbc.NonUniqueResultException) NonSingleColumnException(org.seasar.doma.jdbc.NonSingleColumnException) UncategorizedSQLException(org.springframework.jdbc.UncategorizedSQLException) SQLException(java.sql.SQLException) OptimisticLockException(org.seasar.doma.jdbc.OptimisticLockException) NoResultException(org.seasar.doma.jdbc.NoResultException) ResultMappingException(org.seasar.doma.jdbc.ResultMappingException) JdbcException(org.seasar.doma.jdbc.JdbcException) TypeMismatchDataAccessException(org.springframework.dao.TypeMismatchDataAccessException) DuplicateKeyException(org.springframework.dao.DuplicateKeyException) UncategorizedDataAccessException(org.springframework.dao.UncategorizedDataAccessException) UncategorizedSQLException(org.springframework.jdbc.UncategorizedSQLException) UnknownColumnException(org.seasar.doma.jdbc.UnknownColumnException) SqlExecutionException(org.seasar.doma.jdbc.SqlExecutionException) OptimisticLockingFailureException(org.springframework.dao.OptimisticLockingFailureException) UniqueConstraintException(org.seasar.doma.jdbc.UniqueConstraintException) IncorrectResultSizeDataAccessException(org.springframework.dao.IncorrectResultSizeDataAccessException) EmptyResultDataAccessException(org.springframework.dao.EmptyResultDataAccessException) DataAccessException(org.springframework.dao.DataAccessException) IncorrectResultSizeDataAccessException(org.springframework.dao.IncorrectResultSizeDataAccessException) TypeMismatchDataAccessException(org.springframework.dao.TypeMismatchDataAccessException) UncategorizedDataAccessException(org.springframework.dao.UncategorizedDataAccessException) EmptyResultDataAccessException(org.springframework.dao.EmptyResultDataAccessException)

Example 2 with UniqueConstraintException

use of org.seasar.doma.jdbc.UniqueConstraintException in project doma by domaframework.

the class AutoInsertTest method test_UniqueConstraintException.

@Test
public void test_UniqueConstraintException(Config config) throws Exception {
    DepartmentDao dao = new DepartmentDaoImpl(config);
    Department department = new Department();
    department.setDepartmentId(new Identity<Department>(99));
    department.setDepartmentNo(99);
    department.setDepartmentName("hoge");
    int result = dao.insert(department);
    assertEquals(1, result);
    assertEquals(Integer.valueOf(1), department.getVersion());
    try {
        dao.insert(department);
        fail();
    } catch (UniqueConstraintException e) {
    }
}
Also used : DepartmentDaoImpl(org.seasar.doma.it.dao.DepartmentDaoImpl) CompKeyDepartmentDaoImpl(org.seasar.doma.it.dao.CompKeyDepartmentDaoImpl) Department(org.seasar.doma.it.entity.Department) CompKeyDepartment(org.seasar.doma.it.entity.CompKeyDepartment) UniqueConstraintException(org.seasar.doma.jdbc.UniqueConstraintException) DepartmentDao(org.seasar.doma.it.dao.DepartmentDao) CompKeyDepartmentDao(org.seasar.doma.it.dao.CompKeyDepartmentDao) Test(org.junit.jupiter.api.Test)

Example 3 with UniqueConstraintException

use of org.seasar.doma.jdbc.UniqueConstraintException in project doma by domaframework.

the class ModifyCommand method executeUpdate.

protected int executeUpdate(PreparedStatement preparedStatement) throws SQLException {
    try {
        int updatedRows = preparedStatement.executeUpdate();
        validateRows(updatedRows);
        return updatedRows;
    } catch (SQLException e) {
        Dialect dialect = query.getConfig().getDialect();
        if (dialect.isUniqueConstraintViolated(e)) {
            throw new UniqueConstraintException(query.getConfig().getExceptionSqlLogType(), sql, e);
        }
        throw e;
    }
}
Also used : UniqueConstraintException(org.seasar.doma.jdbc.UniqueConstraintException) SQLException(java.sql.SQLException) Dialect(org.seasar.doma.jdbc.dialect.Dialect)

Aggregations

UniqueConstraintException (org.seasar.doma.jdbc.UniqueConstraintException)3 SQLException (java.sql.SQLException)2 Test (org.junit.jupiter.api.Test)1 CompKeyDepartmentDao (org.seasar.doma.it.dao.CompKeyDepartmentDao)1 CompKeyDepartmentDaoImpl (org.seasar.doma.it.dao.CompKeyDepartmentDaoImpl)1 DepartmentDao (org.seasar.doma.it.dao.DepartmentDao)1 DepartmentDaoImpl (org.seasar.doma.it.dao.DepartmentDaoImpl)1 CompKeyDepartment (org.seasar.doma.it.entity.CompKeyDepartment)1 Department (org.seasar.doma.it.entity.Department)1 JdbcException (org.seasar.doma.jdbc.JdbcException)1 NoResultException (org.seasar.doma.jdbc.NoResultException)1 NonSingleColumnException (org.seasar.doma.jdbc.NonSingleColumnException)1 NonUniqueResultException (org.seasar.doma.jdbc.NonUniqueResultException)1 OptimisticLockException (org.seasar.doma.jdbc.OptimisticLockException)1 ResultMappingException (org.seasar.doma.jdbc.ResultMappingException)1 SqlExecutionException (org.seasar.doma.jdbc.SqlExecutionException)1 UnknownColumnException (org.seasar.doma.jdbc.UnknownColumnException)1 Dialect (org.seasar.doma.jdbc.dialect.Dialect)1 DataAccessException (org.springframework.dao.DataAccessException)1 DuplicateKeyException (org.springframework.dao.DuplicateKeyException)1