## org.hibernate.dialect
Class SQLServer2005Dialect

    java.lang.Object
      org.hibernate.dialect.Dialect
          org.hibernate.dialect.SQLServerDialect
              org.hibernate.dialect.SQLServer2005Dialect

Direct Known Subclasses:
  SQLServer2008Dialect

    public class SQLServer2005Dialect

extends SQLServerDialect

A dialect for Microsoft SQL 2005. (HHH-3936 fix)

Author:
  Yoryos Valotasios

Field Summary

Fields inherited from class org.hibernate.dialect.Dialect
`CLOSED_QUOTE, DEFAULT_BATCH_SIZE, NO_BATCH, QUOTE`

Constructor Summary
`SQLServer2005Dialect()`

Method Summary
`String` `applyLocksToSql(String sql, LockOptions aliasedLockOptions, Map keyColumnNames)` Modifies the given SQL by applying the appropriate updates for the specified lock modes and key columns.
`boolean` `bindLimitParametersFirst()` Does the `LIMIT` clause come at the start of the `SELECT` statement, rather than at the end?
`int` `convertToFirstRowValue(int zeroBasedFirstResult)` Hibernate APIs explicitly state that setFirstResult() should be a zero-based offset.
`boolean` `dropTemporaryTableAfterUse()` Do we need to drop the temporary table after use?
`String` `generateTemporaryTableName(String baseTableName)` Generate a temporary table name given the base table.
`String` `getAddColumnString()` The syntax used to add a column to a table (optional).
`String` `getForUpdateString()` Get the string to append to SELECT statements to acquire locks for this dialect.
`String` `getIdentityColumnString()` The syntax used during DDL to define a column as being an IDENTITY.
`String` `getIdentitySelectString()` Get the select command to use to retrieve the last generated IDENTITY value.
`String` `getLimitString(String querySqlString, boolean hasOffset)` Add a LIMIT clause to the given SQL SELECT (HHH-2655: ROW_NUMBER for Paging) The LIMIT SQL will look like:
`String` `getLimitString(String query, int offset, int limit)` Given a limit and an offset, apply the limit clause to the query.
`String` `getNullColumnString()` The keyword used to specify a nullable column.
`ResultSet` `getResultSet(CallableStatement ps)` Given a callable statement previously processed by `Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int)`, extract the `ResultSet` from the OUT parameter.
`protected static CharSequence` `getSelectFieldsWithoutAliases(StringBuilder sql)` This utility method searches the given sql query for the fields of the select statement and returns them without the aliases.
`String` `getSelectGUIDString()` Get the command used to select a GUID from the underlying database.
`protected static void` `insertRowNumberFunction(StringBuilder sql, CharSequence orderby)` Right after the select statement of a given query we must place the row_number function
`boolean` `isCurrentTimestampSelectStringCallable()` Should the value returned by `Dialect.getCurrentTimestampSelectString()` be treated as callable.
`boolean` `qualifyIndexName()` Do we need to qualify index names with the schema name?
`int` `registerResultSetOutParameter(CallableStatement statement, int col)` Registers an OUT parameter which will be returning a `ResultSet`.
`protected static void` `replaceDistinctWithGroupBy(StringBuilder sql)` Utility method that checks if the given sql query is a select distinct one and if so replaces the distinct select with an equivalent simple select with a group by clause.
`protected static String` `stripAliases(String str)` Utility method that strips the aliases.
`boolean` `supportsCurrentTimestampSelection()` Does this dialect support a way to retrieve the database's current timestamp value?
`boolean` `supportsEmptyInList()` Does this dialect support empty IN lists? For example, is [where XYZ in ()] a supported construct?
`boolean` `supportsExistsInSelect()` Does the dialect support an exists statement in the select clause?
`boolean` `supportsIdentityColumns()` Does this dialect support identity column key generation?
`boolean` `supportsInsertSelectIdentity()` Does the dialect support some form of inserting and selecting the generated IDENTITY value all in the same statement.
`boolean` `supportsLimitOffset()` Does this dialect's LIMIT support (if any) additionally support specifying an offset?
`boolean` `supportsTemporaryTables()` Does this dialect support temporary tables?
`boolean` `supportsTupleDistinctCounts()` Does this dialect support `count(distinct a,b)`?
`boolean` `supportsUnionAll()` Does this dialect support UNION ALL, which is generally a faster variant of UNION?
`boolean` `supportsVariableLimit()` Does this dialect support bind variables (i.e., prepared statement parameters) for its limit/offset?

Methods inherited from class org.hibernate.dialect.SQLServerDialect

`appendIdentitySelectToInsert, appendLockHint, areStringComparisonsCaseInsensitive, closeQuote, doesReadCommittedCauseWritersToBlockReaders, doesRepeatableReadCauseReadersToBlockWriters, getCurrentTimestampSelectString, getNoColumnsInsertString, openQuote, supportsCircularCascadeDeleteConstraints, supportsLimit, supportsLobValueChangePropogation, supportsResultSetPositionQueryMethodsOnForwardOnlyCursor, useMaxForLimit`

Methods inherited from class org.hibernate.dialect.Dialect

`addTypeOverride, bindLimitParametersInReverseOrder, buildSQLExceptionConverter, createCaseFragment, createOuterJoinFragment, dropConstraints, forceLimitUsage, forUpdateOfColumns, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getCascadeConstraintsString, getCastTypeName, getColumnAliasExtractor, getColumnComment, getCreateMultisetTableString, getCreateSequenceString, getCreateSequenceString, getCreateSequenceStrings, getCreateSequenceStrings, getCreateTableString, getCreateTemporaryTablePostfix, getCreateTemporaryTableString, getCrossJoinSeparator, getCurrentTimestampSQLFunctionName, getDefaultProperties, getDialect, getDialect, getDropForeignKeyString, getDropSequenceString, getDropSequenceStrings, getDropTemporaryTableString, getForUpdateNowaitString, getForUpdateNowaitString, getForUpdateString, getForUpdateString, getForUpdateString, getForUpdateString, getFunctions, getHibernateTypeName, getHibernateTypeName, getIdentityColumnString, getIdentityInsertString, getIdentitySelectString, getKeywords, getLockingStrategy, getLowercaseFunction, getMaxAliasLength, getNativeIdentifierGeneratorClass, getQuerySequencesString, getReadLockString, getSelectClauseNullString, getSelectSequenceNextValString, getSequenceNextValString, getTableComment, getTableTypeString, getTypeName, getTypeName, getTypeOverrides, getViolatedConstraintNameExtracter, getWriteLockString, hasAlterTable, hasDataTypeInIdentityColumn, hasSelfReferentialForeignKeyBug, isLockTimeoutParameterized, performTemporaryTableDDLInIsolation, quote, registerColumnType, registerColumnType, registerFunction, registerHibernateType, registerHibernateType, registerKeyword, replaceResultVariableInOrderByClauseWithPosition, requiresCastingOfParametersInSelectClause, supportsBindAsCallableArgument, supportsCascadeDelete, supportsColumnCheck, supportsCommentOn, supportsExpectedLobUsagePattern, supportsIfExistsAfterTableName, supportsIfExistsBeforeTableName, supportsLockTimeouts, supportsNotNullUnique, supportsOuterJoinForUpdate, supportsParametersInInsertSelect, supportsPooledSequences, supportsRowValueConstructorSyntax, supportsRowValueConstructorSyntaxInInList, supportsSequences, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsTupleCounts, supportsUnboundedLobLocatorMaterialization, supportsUnique, supportsUniqueConstraintInCreateAlterTable, toBooleanValueString, toString, transformSelectString, useInputStreamToInsertBlob`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### SQLServer2005Dialect

    public SQLServer2005Dialect()

Method Detail

### supportsLimitOffset

    public boolean supportsLimitOffset()

  Description copied from class: `Dialect`
  Does this dialect's LIMIT support (if any) additionally support specifying an offset?

  Overrides:
    `supportsLimitOffset` in class `SQLServerDialect`
  Returns:
    True if the dialect supports an offset within the limit support.

### bindLimitParametersFirst

    public boolean bindLimitParametersFirst()

  Description copied from class: `Dialect`
  Does the `LIMIT` clause come at the start of the `SELECT` statement, rather than at the end?

  Overrides:
    `bindLimitParametersFirst` in class `Dialect`
  Returns:
    true if limit parameters should come before other parameters

### supportsVariableLimit

    public boolean supportsVariableLimit()

  Description copied from class: `Dialect`
  Does this dialect support bind variables (i.e., prepared statement parameters) for its limit/offset?

  Overrides:
    `supportsVariableLimit` in class `SQLServerDialect`
  Returns:
    True if bind variables can be used; false otherwise.

### convertToFirstRowValue

    public int convertToFirstRowValue(int zeroBasedFirstResult)

  Description copied from class: `Dialect`
  Hibernate APIs explicitly state that setFirstResult() should be a zero-based offset. Here we allow the Dialect a chance to convert that value based on what the underlying db or driver will expect.

  NOTE: what gets passed into `Dialect.getLimitString(String,int,int)` is the zero-based offset. Dialects which do not `Dialect.supportsVariableLimit()` should take care to perform any needed `Dialect.convertToFirstRowValue(int)` calls prior to injecting the limit values into the SQL string.

  Overrides:
    `convertToFirstRowValue` in class `Dialect`
  Parameters:
    `zeroBasedFirstResult` - The user-supplied, zero-based first row offset.
  Returns:
    The corresponding db/dialect specific offset.
  See Also:
    `Query.setFirstResult(int)`, `Criteria.setFirstResult(int)`

### getLimitString

    public String getLimitString(String query,
                                 int offset,
                                 int limit)

  Description copied from class: `Dialect`
  Given a limit and an offset, apply the limit clause to the query.

  Overrides:
    `getLimitString` in class `SQLServerDialect`
  Parameters:
    `query` - The query to which to apply the limit.
    `offset` - The offset of the limit
    `limit` - The limit of the limit ;)
  Returns:
    The modified query statement with the limit applied.

### getLimitString

    public String getLimitString(String querySqlString,
                                 boolean hasOffset)

  Add a LIMIT clause to the given SQL SELECT (HHH-2655: ROW_NUMBER for Paging) The LIMIT SQL will look like:

       WITH query AS (
         SELECT ROW_NUMBER() OVER (ORDER BY orderby) as __hibernate_row_nr__,
         original_query_without_orderby
       )
       SELECT * FROM query WHERE __hibernate_row_nr__ BEETWIN offset AND offset + last

  Overrides:
    `getLimitString` in class `Dialect`
  Parameters:
    `querySqlString` - The SQL statement to base the limit query off of.
    `offset` - Offset of the first row to be returned by the query (zero-based)
    `limit` - Maximum number of rows to be returned by the query
  Returns:
    A new SQL statement with the LIMIT clause applied.

### replaceDistinctWithGroupBy

    protected static void replaceDistinctWithGroupBy(StringBuilder sql)

  Utility method that checks if the given sql query is a select distinct one and if so replaces the distinct select with an equivalent simple select with a group by clause. See `SQLServer2005DialectTestCase#testReplaceDistinctWithGroupBy()`

  Parameters:
    `sql` - an sql query

### getSelectFieldsWithoutAliases

    protected static CharSequence getSelectFieldsWithoutAliases(StringBuilder sql)

  This utility method searches the given sql query for the fields of the select statement and returns them without the aliases. See `SQLServer2005DialectTestCase#testGetSelectFieldsWithoutAliases()`

  Parameters:
    `an` - sql query
  Returns:
    the fields of the select statement without their alias

### stripAliases

    protected static String stripAliases(String str)

  Utility method that strips the aliases. See `SQLServer2005DialectTestCase#testStripAliases()`

  Parameters:
    `a` - string to replace the as statements
  Returns:
    a string without the as statements

### insertRowNumberFunction

    protected static void insertRowNumberFunction(StringBuilder sql,
                                                  CharSequence orderby)

  Right after the select statement of a given query we must place the row_number function

  Parameters:
    `sql` - the initial sql query without the order by clause
    `orderby` - the order by clause of the query

### getAddColumnString

    public String getAddColumnString()

  Description copied from class: `Dialect`
  The syntax used to add a column to a table (optional).

  Overrides:
    `getAddColumnString` in class `Dialect`
  Returns:
    The "add column" fragment.

### getNullColumnString

    public String getNullColumnString()

  Description copied from class: `Dialect`
  The keyword used to specify a nullable column.

  Overrides:
    `getNullColumnString` in class `Dialect`
  Returns:
    String

### qualifyIndexName

    public boolean qualifyIndexName()

  Description copied from class: `Dialect`
  Do we need to qualify index names with the schema name?

  Overrides:
    `qualifyIndexName` in class `Dialect`
  Returns:
    boolean

### getForUpdateString

    public String getForUpdateString()

  Description copied from class: `Dialect`
  Get the string to append to SELECT statements to acquire locks for this dialect.

  Overrides:
    `getForUpdateString` in class `Dialect`
  Returns:
    The appropriate `FOR UPDATE` clause string.

### supportsIdentityColumns

    public boolean supportsIdentityColumns()

  Description copied from class: `Dialect`
  Does this dialect support identity column key generation?

  Overrides:
    `supportsIdentityColumns` in class `Dialect`
  Returns:
    True if IDENTITY columns are supported; false otherwise.

### getIdentitySelectString

    public String getIdentitySelectString()

  Description copied from class: `Dialect`
  Get the select command to use to retrieve the last generated IDENTITY value.

  Overrides:
    `getIdentitySelectString` in class `Dialect`
  Returns:
    The appropriate select command

### getIdentityColumnString

    public String getIdentityColumnString()

  Description copied from class: `Dialect`
  The syntax used during DDL to define a column as being an IDENTITY.

  Overrides:
    `getIdentityColumnString` in class `Dialect`
  Returns:
    The appropriate DDL fragment.

### supportsInsertSelectIdentity

    public boolean supportsInsertSelectIdentity()

  Description copied from class: `Dialect`
  Does the dialect support some form of inserting and selecting the generated IDENTITY value all in the same statement.

  Overrides:
    `supportsInsertSelectIdentity` in class `Dialect`
  Returns:
    True if the dialect supports selecting the just generated IDENTITY in the insert statement.

### applyLocksToSql

    public String applyLocksToSql(String sql,
                                  LockOptions aliasedLockOptions,
                                  Map keyColumnNames)

  Description copied from class: `Dialect`
  Modifies the given SQL by applying the appropriate updates for the specified lock modes and key columns.

  The behavior here is that of an ANSI SQL `SELECT FOR UPDATE`. This method is really intended to allow dialects which do not support `SELECT FOR UPDATE` to achieve this in their own fashion.

  Overrides:
    `applyLocksToSql` in class `Dialect`
  Parameters:
    `sql` - the SQL string to modify
    `aliasedLockOptions` - lock options indexed by aliased table names.
    `keyColumnNames` - a map of key columns indexed by aliased table names.
  Returns:
    the modified SQL string.

### registerResultSetOutParameter

    public int registerResultSetOutParameter(CallableStatement statement,
                                             int col)
                                      throws SQLException

  Description copied from class: `Dialect`
  Registers an OUT parameter which will be returning a `ResultSet`. How this is accomplished varies greatly from DB to DB, hence its inclusion (along with `Dialect.getResultSet(java.sql.CallableStatement)`) here.

  Overrides:
    `registerResultSetOutParameter` in class `Dialect`
  Parameters:
    `statement` - The callable statement.
    `col` - The bind position at which to register the OUT param.
  Returns:
    The number of (contiguous) bind positions used.
  Throws:
    `SQLException` - Indicates problems registering the OUT param.

### getResultSet

    public ResultSet getResultSet(CallableStatement ps)
                           throws SQLException

  Description copied from class: `Dialect`
  Given a callable statement previously processed by `Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int)`, extract the `ResultSet` from the OUT parameter.

  Overrides:
    `getResultSet` in class `Dialect`
  Parameters:
    `ps` - The callable statement.
  Returns:
    The extracted result set.
  Throws:
    `SQLException` - Indicates problems extracting the result set.

### supportsCurrentTimestampSelection

    public boolean supportsCurrentTimestampSelection()

  Description copied from class: `Dialect`
  Does this dialect support a way to retrieve the database's current timestamp value?

  Overrides:
    `supportsCurrentTimestampSelection` in class `Dialect`
  Returns:
    True if the current timestamp can be retrieved; false otherwise.

### isCurrentTimestampSelectStringCallable

    public boolean isCurrentTimestampSelectStringCallable()

  Description copied from class: `Dialect`
  Should the value returned by `Dialect.getCurrentTimestampSelectString()` be treated as callable. Typically this indicates that JDBC escape syntax is being used...

  Overrides:
    `isCurrentTimestampSelectStringCallable` in class `Dialect`
  Returns:
    True if the `Dialect.getCurrentTimestampSelectString()` return is callable; false otherwise.

### supportsTemporaryTables

    public boolean supportsTemporaryTables()

  Description copied from class: `Dialect`
  Does this dialect support temporary tables?

  Overrides:
    `supportsTemporaryTables` in class `Dialect`
  Returns:
    True if temp tables are supported; false otherwise.

### generateTemporaryTableName

    public String generateTemporaryTableName(String baseTableName)

  Description copied from class: `Dialect`
  Generate a temporary table name given the base table.

  Overrides:
    `generateTemporaryTableName` in class `Dialect`
  Parameters:
    `baseTableName` - The table name from which to base the temp table name.
  Returns:
    The generated temp table name.

### dropTemporaryTableAfterUse

    public boolean dropTemporaryTableAfterUse()

  Description copied from class: `Dialect`
  Do we need to drop the temporary table after use?

  Overrides:
    `dropTemporaryTableAfterUse` in class `Dialect`
  Returns:
    True if the table should be dropped.

### getSelectGUIDString

    public String getSelectGUIDString()

  Description copied from class: `Dialect`
  Get the command used to select a GUID from the underlying database.

  Optional operation.

  Overrides:
    `getSelectGUIDString` in class `Dialect`
  Returns:
    The appropriate command.

### supportsEmptyInList

    public boolean supportsEmptyInList()

  Description copied from class: `Dialect`
  Does this dialect support empty IN lists?

  For example, is [where XYZ in ()] a supported construct?

  Overrides:
    `supportsEmptyInList` in class `Dialect`
  Returns:
    True if empty in lists are supported; false otherwise.

### supportsUnionAll

    public boolean supportsUnionAll()

  Description copied from class: `Dialect`
  Does this dialect support UNION ALL, which is generally a faster variant of UNION?

  Overrides:
    `supportsUnionAll` in class `Dialect`
  Returns:
    True if UNION ALL is supported; false otherwise.

### supportsExistsInSelect

    public boolean supportsExistsInSelect()

  Description copied from class: `Dialect`
  Does the dialect support an exists statement in the select clause?

  Overrides:
    `supportsExistsInSelect` in class `Dialect`
  Returns:
    True if exists checks are allowed in the select clause; false otherwise.

### supportsTupleDistinctCounts

    public boolean supportsTupleDistinctCounts()

  Description copied from class: `Dialect`
  Does this dialect support `count(distinct a,b)`?

  Overrides:
    `supportsTupleDistinctCounts` in class `Dialect`
  Returns:
    True if the database supports counting disintct tuples; false otherwise.

Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.