public static OrmSqlException doTranslate(final String task, final String sql, final SQLException ex) { String sqlState = getSqlState(ex); if ((sqlState != null) && (sqlState.length() >= 2)) { String classCode = sqlState.substring(0, 2); if (BAD_SQL_GRAMMAR_CODES.contains(classCode)) { return new OrmSqlBadGrammarException(buildMessage(task, sql, ex), ex); } else if (DATA_INTEGRITY_VIOLATION_CODES.contains(classCode)) { return new OrmSqlDataIntegrityViolationException(buildMessage(task, sql, ex), ex); } else if (DATA_ACCESS_RESOURCE_FAILURE_CODES.contains(classCode)) { return new OrmSqlDataAccessResourceFailureException(buildMessage(task, sql, ex), ex); } else if (TRANSIENT_DATA_ACCESS_RESOURCE_CODES.contains(classCode)) { return new OrmSqlTransientDataAccessResourceException(buildMessage(task, sql, ex), ex); } else if (CONCURRENCY_FAILURE_CODES.contains(classCode)) { return new OrmSqlConcurrencyFailureException(buildMessage(task, sql, ex), ex); } } return new OrmSqlException(buildMessage(task, sql, ex), ex); }
@Test public void testConstraintViolationException() throws Exception { final int id = new Random().nextInt(); final Employee employee = new Employee(); employee.setId( id ); employee.setAge( 44 ); employee.setEmployeeNumber( ("empNumber_" + id) ); employee.setName("Wizard"); employee.setSurname("Cina"); // CREATE final Session conn = this.jpOrm.session(); Transaction tx = conn.transaction(); try { conn.save(employee); conn.save(employee); tx.commit(); } catch (OrmSqlDataIntegrityViolationException e) { System.out.println("Constraint violation intercepted. Message [" + e.getMessage() + "]"); } catch (Exception e) { fail("A specific exception should be thrown, but is " + e); } finally { tx.rollback(); } }
@Test public void testConstraintViolationException() throws Exception { final int id = new Random().nextInt(); final Employee employee = new Employee(); employee.setId( id ); employee.setAge( 44 ); employee.setEmployeeNumber( ("empNumber_" + id) ); employee.setName("Wizard"); employee.setSurname("Cina"); // CREATE final Session conn = this.jpOrm.session(); ITransaction tx = conn.transaction(); try { conn.save(employee); conn.save(employee); tx.commit(); } catch (OrmSqlDataIntegrityViolationException e) { System.out.println("Constraint violation intercepted. Message [" + e.getMessage() + "]"); } catch (Exception e) { fail("A specific exception should be thrown, but is " + e); } finally { tx.rollback(); } }