@Override public int getDatabaseMajorVersion() { try { return interpretVersion( databaseMetaData.getDatabaseMajorVersion() ); } catch (SQLException e) { throw BasicSQLExceptionConverter.INSTANCE.convert( e ); } }
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "H2".equals( databaseName ) ) { return latestDialectInstance( this ); } return null; } },
@Override public String getDriverName() { try { return databaseMetaData.getDriverName(); } catch (SQLException e) { throw BasicSQLExceptionConverter.INSTANCE.convert( e ); } }
/** * Determine the appropriate Dialect to use given the connection. * * @param resolutionInfoSource Access to DialectResolutionInfo used to resolve the Dialect. * * @return The appropriate dialect instance. * * @throws HibernateException No connection given or no resolver could make * the determination from the given connection. */ private Dialect determineDialect(DialectResolutionInfoSource resolutionInfoSource) { if ( resolutionInfoSource == null ) { throw new HibernateException( "Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set" ); } final DialectResolutionInfo info = resolutionInfoSource.getDialectResolutionInfo(); final Dialect dialect = dialectResolver.resolveDialect( info ); if ( dialect == null ) { throw new HibernateException( "Unable to determine Dialect to use [name=" + info.getDatabaseName() + ", majorVersion=" + info.getDatabaseMajorVersion() + "]; user must register resolver or explicitly set 'hibernate.dialect'" ); } return dialect; } }
@Override public DialectResolutionInfo getDialectResolutionInfo() { try { return new DatabaseMetaDataDialectResolutionInfoAdapter( connection.getMetaData() ); } catch ( SQLException sqlException ) { throw new HibernateException( "Unable to access java.sql.DatabaseMetaData to determine appropriate Dialect to use", sqlException ); } } }
@Override public final Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); final int databaseMajorVersion = info.getDatabaseMajorVersion(); final int databaseMinorVersion = info.getDatabaseMinorVersion(); if ( nameToMatch.equalsIgnoreCase( databaseName ) && ( majorVersionToMatch == NO_VERSION || majorVersionToMatch == databaseMajorVersion ) && ( minorVersionToMatch == NO_VERSION || minorVersionToMatch == databaseMinorVersion ) ) { try { return (Dialect) dialectClass.newInstance(); } catch (HibernateException e) { // conceivable that the dialect ctor could throw HibernateExceptions, so don't re-wrap throw e; } catch (Throwable t) { throw new HibernateException( "Could not instantiate specified Dialect class [" + dialectClass.getName() + "]", t ); } } return null; } }
@Override public Dialect resolveDialect(DialectResolutionInfo info) { for ( DialectResolver resolver : resolvers ) { try { final Dialect dialect = resolver.resolveDialect( info ); if ( dialect != null ) { return dialect; } } catch ( JDBCConnectionException e ) { throw e; } catch ( Exception e ) { LOG.exceptionInSubResolver( e.getMessage() ); } } return null; }
@Override public int getDriverMinorVersion() { return interpretVersion( databaseMetaData.getDriverMinorVersion() ); } }
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "Apache Derby".equals( databaseName ) ) { final int majorVersion = info.getDatabaseMajorVersion(); final int minorVersion = info.getDatabaseMinorVersion(); if ( majorVersion > 10 || ( majorVersion == 10 && minorVersion >= 7 ) ) { return latestDialectInstance( this ); } else if ( majorVersion == 10 && minorVersion == 6 ) { return new DerbyTenSixDialect(); } else if ( majorVersion == 10 && minorVersion == 5 ) { return new DerbyTenFiveDialect(); } else { return new DerbyDialect(); } } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "EnterpriseDB".equals( databaseName ) ) { return latestDialectInstance( this ); } return null; } },
@Override public int getDatabaseMinorVersion() { try { return interpretVersion( databaseMetaData.getDatabaseMinorVersion() ); } catch (SQLException e) { throw BasicSQLExceptionConverter.INSTANCE.convert( e ); } }
@Override public String getDatabaseName() { try { return databaseMetaData.getDatabaseProductName(); } catch (SQLException e) { throw BasicSQLExceptionConverter.INSTANCE.convert( e ); } }
@Override public int getDriverMajorVersion() { return interpretVersion( databaseMetaData.getDriverMajorVersion() ); }
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( databaseName.startsWith( "Firebird" ) ) { return latestDialectInstance( this ); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "HDB".equals( databaseName ) ) { // SAP recommends defaulting to column store. return latestDialectInstance( this ); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "CUBRID".equalsIgnoreCase( databaseName ) ) { return latestDialectInstance( this ); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "HSQL Database Engine".equals( databaseName ) ) { return latestDialectInstance( this ); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "Informix Dynamic Server".equals( databaseName ) ) { return latestDialectInstance( this ); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "Sybase SQL Server".equals( databaseName ) || "Adaptive Server Enterprise".equals( databaseName ) ) { return latestDialectInstance( this ); } if ( databaseName.startsWith( "Adaptive Server Anywhere" ) || "SQL Anywhere".equals( databaseName ) ) { return new SybaseAnywhereDialect(); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "DB2 UDB for AS/400".equals( databaseName ) ) { return new DB2400Dialect(); } if ( databaseName.startsWith( "DB2/" ) ) { return new DB2Dialect(); } return null; } },