@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) { if ( info.getDriverName() != null && info.getDriverName().startsWith( "MariaDB" ) ) { final int majorVersion = info.getDatabaseMajorVersion(); final int minorVersion = info.getDatabaseMinorVersion(); if ( majorVersion == 10 ) { if ( minorVersion >= 3 ) { return new MariaDB103Dialect(); } else if ( minorVersion == 2 ) { return new MariaDB102Dialect(); } else if ( minorVersion >= 0 ) { return new MariaDB10Dialect(); } return new MariaDB53Dialect(); } else if ( majorVersion > 5 || ( majorVersion == 5 && minorVersion >= 3 ) ) { return new MariaDB53Dialect(); } return new MariaDBDialect(); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "Oracle".equals( databaseName ) ) { final int majorVersion = info.getDatabaseMajorVersion(); switch ( majorVersion ) { case 12: return new Oracle12cDialect(); case 11: // fall through case 10: return new Oracle10gDialect(); case 9: return new Oracle9iDialect(); case 8: return new Oracle8iDialect(); default: return latestDialectInstance( this ); } } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "EnterpriseDB".equals( databaseName ) ) { return latestDialectInstance( this ); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( databaseName.startsWith( "Firebird" ) ) { return latestDialectInstance( this ); } return null; } },
/** * 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 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 ( "H2".equals( databaseName ) ) { return latestDialectInstance( this ); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); final int majorVersion = info.getDatabaseMajorVersion();
@Override public Dialect resolveDialect(DialectResolutionInfo info) { if ( info.getDriverName() != null && info.getDriverName().startsWith( "MariaDB" ) ) { final int majorVersion = info.getDatabaseMajorVersion(); final int minorVersion = info.getDatabaseMinorVersion(); if ( majorVersion == 10 ) { if ( minorVersion >= 3 ) { return new MariaDB103Dialect(); } else if ( minorVersion == 2 ) { return new MariaDB102Dialect(); } else if ( minorVersion >= 0 ) { return new MariaDB10Dialect(); } return new MariaDB53Dialect(); } else if ( majorVersion > 5 || ( majorVersion == 5 && minorVersion >= 3 ) ) { return new MariaDB53Dialect(); } return new MariaDBDialect(); } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "MySQL".equals( databaseName ) ) { final int majorVersion = info.getDatabaseMajorVersion(); final int minorVersion = info.getDatabaseMinorVersion(); if ( majorVersion < 5 ) { return new MySQLDialect(); } else if ( majorVersion == 5 ) { if ( minorVersion < 5 ) { return new MySQL5Dialect(); } else if ( minorVersion < 7 ) { return new MySQL55Dialect(); } else { return new MySQL57Dialect(); } } 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 ( "Oracle".equals( databaseName ) ) { final int majorVersion = info.getDatabaseMajorVersion(); switch ( majorVersion ) { case 12: return new Oracle12cDialect(); case 11: // fall through case 10: return new Oracle10gDialect(); case 9: return new Oracle9iDialect(); case 8: return new Oracle8iDialect(); default: latestDialectInstance( this ); } } return null; } },
@Override public Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); if ( "ingres".equalsIgnoreCase( databaseName ) ) { final int majorVersion = info.getDatabaseMajorVersion(); final int minorVersion = info.getDatabaseMinorVersion(); if ( majorVersion < 9 ) { return new IngresDialect(); } else if ( majorVersion == 9 ) { if ( minorVersion > 2 ) { return new Ingres9Dialect(); } return new IngresDialect(); } else if ( majorVersion == 10 ) { return new Ingres10Dialect(); } 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; } },
/** * 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 Dialect resolveDialect(DialectResolutionInfo info) { final String databaseName = info.getDatabaseName(); final int majorVersion = info.getDatabaseMajorVersion(); final int minorVersion = info.getDatabaseMinorVersion();
@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(); final int majorVersion = info.getDatabaseMajorVersion();
@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 || majorVersionToMatch == 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; } }