Search in sources :

Example 1 with JDBCConnectionException

use of org.hibernate.exception.JDBCConnectionException in project hibernate-orm by hibernate.

the class SQLStateConversionDelegate method convert.

@Override
public JDBCException convert(SQLException sqlException, String message, String sql) {
    final String sqlState = JdbcExceptionHelper.extractSqlState(sqlException);
    final int errorCode = JdbcExceptionHelper.extractErrorCode(sqlException);
    if (sqlState != null) {
        String sqlStateClassCode = JdbcExceptionHelper.determineSqlStateClassCode(sqlState);
        if (sqlStateClassCode != null) {
            if (SQL_GRAMMAR_CATEGORIES.contains(sqlStateClassCode)) {
                return new SQLGrammarException(message, sqlException, sql);
            } else if (INTEGRITY_VIOLATION_CATEGORIES.contains(sqlStateClassCode)) {
                final String constraintName = getConversionContext().getViolatedConstraintNameExtracter().extractConstraintName(sqlException);
                return new ConstraintViolationException(message, sqlException, sql, constraintName);
            } else if (CONNECTION_CATEGORIES.contains(sqlStateClassCode)) {
                return new JDBCConnectionException(message, sqlException, sql);
            } else if (DATA_CATEGORIES.contains(sqlStateClassCode)) {
                return new DataException(message, sqlException, sql);
            }
        }
        if ("40001".equals(sqlState)) {
            return new LockAcquisitionException(message, sqlException, sql);
        }
        if ("40XL1".equals(sqlState) || "40XL2".equals(sqlState)) {
            // Derby "A lock could not be obtained within the time requested."
            return new PessimisticLockException(message, sqlException, sql);
        }
        // MySQL Query execution was interrupted
        if ("70100".equals(sqlState) || // Oracle user requested cancel of current operation
        ("72000".equals(sqlState) && errorCode == 1013)) {
            throw new QueryTimeoutException(message, sqlException, sql);
        }
    }
    return null;
}
Also used : DataException(org.hibernate.exception.DataException) QueryTimeoutException(org.hibernate.QueryTimeoutException) JDBCConnectionException(org.hibernate.exception.JDBCConnectionException) SQLGrammarException(org.hibernate.exception.SQLGrammarException) ConstraintViolationException(org.hibernate.exception.ConstraintViolationException) LockAcquisitionException(org.hibernate.exception.LockAcquisitionException) PessimisticLockException(org.hibernate.PessimisticLockException)

Example 2 with JDBCConnectionException

use of org.hibernate.exception.JDBCConnectionException in project hibernate-orm by hibernate.

the class ConnectionCreatorTest method testBadUrl.

@Test
@TestForIssue(jiraKey = "HHH-8621")
public void testBadUrl() throws Exception {
    DriverConnectionCreator connectionCreator = new DriverConnectionCreator((Driver) Class.forName("org.h2.Driver").newInstance(), new StandardServiceRegistryImpl(true, new BootstrapServiceRegistryImpl(), Collections.<StandardServiceInitiator>emptyList(), Collections.<ProvidedService>emptyList(), Collections.emptyMap()) {

        @Override
        @SuppressWarnings("unchecked")
        public <R extends Service> R getService(Class<R> serviceRole) {
            if (JdbcServices.class.equals(serviceRole)) {
                // return a new, not fully initialized JdbcServicesImpl
                return (R) new JdbcServicesImpl();
            }
            return super.getService(serviceRole);
        }
    }, "jdbc:h2:mem:test-bad-urls;nosuchparam=saywhat", new Properties(), false, null);
    try {
        Connection conn = connectionCreator.createConnection();
        conn.close();
        fail("Expecting the bad Connection URL to cause an exception");
    } catch (JDBCConnectionException expected) {
    }
}
Also used : JdbcServicesImpl(org.hibernate.engine.jdbc.internal.JdbcServicesImpl) JDBCConnectionException(org.hibernate.exception.JDBCConnectionException) ProvidedService(org.hibernate.service.internal.ProvidedService) DriverConnectionCreator(org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator) StandardServiceInitiator(org.hibernate.boot.registry.StandardServiceInitiator) Connection(java.sql.Connection) JdbcServices(org.hibernate.engine.jdbc.spi.JdbcServices) Properties(java.util.Properties) BootstrapServiceRegistryImpl(org.hibernate.boot.registry.internal.BootstrapServiceRegistryImpl) StandardServiceRegistryImpl(org.hibernate.boot.registry.internal.StandardServiceRegistryImpl) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Aggregations

JDBCConnectionException (org.hibernate.exception.JDBCConnectionException)2 Connection (java.sql.Connection)1 Properties (java.util.Properties)1 PessimisticLockException (org.hibernate.PessimisticLockException)1 QueryTimeoutException (org.hibernate.QueryTimeoutException)1 StandardServiceInitiator (org.hibernate.boot.registry.StandardServiceInitiator)1 BootstrapServiceRegistryImpl (org.hibernate.boot.registry.internal.BootstrapServiceRegistryImpl)1 StandardServiceRegistryImpl (org.hibernate.boot.registry.internal.StandardServiceRegistryImpl)1 DriverConnectionCreator (org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator)1 JdbcServicesImpl (org.hibernate.engine.jdbc.internal.JdbcServicesImpl)1 JdbcServices (org.hibernate.engine.jdbc.spi.JdbcServices)1 ConstraintViolationException (org.hibernate.exception.ConstraintViolationException)1 DataException (org.hibernate.exception.DataException)1 LockAcquisitionException (org.hibernate.exception.LockAcquisitionException)1 SQLGrammarException (org.hibernate.exception.SQLGrammarException)1 ProvidedService (org.hibernate.service.internal.ProvidedService)1 TestForIssue (org.hibernate.testing.TestForIssue)1 Test (org.junit.Test)1