Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.hibernate.dialect
Class SQLServerDialect

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

    public class SQLServerDialect

extends SybaseDialect

A dialect for Microsoft SQL Server 2000 and 2005

Author:
  Gavin King

Field Summary

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

Constructor Summary
`SQLServerDialect()`

Method Summary
`String` | `appendIdentitySelectToInsert(String insertSQL)` Use `insert table(...) values(...) select SCOPE_IDENTITY()`
`String` | `appendLockHint(LockMode mode, String tableName)` Some dialects support an alternative means to `SELECT FOR UPDATE`, whereby a "lock hint" is appends to the table name in the from clause.
`boolean` | `areStringComparisonsCaseInsensitive()` Are string comparisons implicitly case insensitive.
`char` | `closeQuote()` The character specific to this dialect used to close a quoted identifier.
`boolean` | `doesReadCommittedCauseWritersToBlockReaders()` For the underlying database, is READ_COMMITTED isolation implemented by forcing readers to wait for write locks to be released?
`boolean` | `doesRepeatableReadCauseReadersToBlockWriters()` For the underlying database, is REPEATABLE_READ isolation implemented by forcing writers to wait for read locks to be released?
`String` | `getCurrentTimestampSelectString()` Retrieve the command used to retrieve the current timestammp from the database.
`String` | `getLimitString(String querySelect, int offset, int limit)` Given a limit and an offset, apply the limit clause to the query.
`String` | `getNoColumnsInsertString()` The fragment used to insert a row without specifying any column values.
`String` | `getSelectGUIDString()` Get the command used to select a GUID from the underlying database.
`char` | `openQuote()` The character specific to this dialect used to begin a quoted identifier.
`boolean` | `supportsCircularCascadeDeleteConstraints()` Does this dialect support definition of cascade delete constraints which can cause circular chains?
`boolean` | `supportsLimit()` Does this dialect support some form of limiting query results via a SQL clause?
`boolean` | `supportsLimitOffset()` Does this dialect's LIMIT support (if any) additionally support specifying an offset?
`boolean` | `supportsLobValueChangePropogation()` Does the dialect support propogating changes to LOB values back to the database? Talking about mutating the internal value of the locator as opposed to supplying a new locator instance...
`boolean` | `supportsResultSetPositionQueryMethodsOnForwardOnlyCursor()` Does this dialect support asking the result set its positioning information on forward only cursors.
`boolean` | `supportsVariableLimit()` Does this dialect support bind variables (i.e., prepared statememnt parameters) for its limit/offset?
`boolean` | `useMaxForLimit()` Does the `LIMIT` clause take a "maximum" row number instead of a total number of returned rows? This is easiest understood via an example.

Methods inherited from class org.hibernate.dialect.SybaseDialect
`applyLocksToSql, dropTemporaryTableAfterUse, generateTemporaryTableName, getAddColumnString, getForUpdateString, getIdentityColumnString, getIdentitySelectString, getNullColumnString, getResultSet, isCurrentTimestampSelectStringCallable, qualifyIndexName, registerResultSetOutParameter, supportsCurrentTimestampSelection, supportsEmptyInList, supportsExistsInSelect, supportsIdentityColumns, supportsInsertSelectIdentity, supportsTemporaryTables`

Methods inherited from class org.hibernate.dialect.Dialect
`bindLimitParametersFirst, bindLimitParametersInReverseOrder, buildSQLExceptionConverter, createCaseFragment, createOuterJoinFragment, dropConstraints, forUpdateOfColumns, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getCascadeConstraintsString, getCastTypeName, getColumnComment, getCreateMultisetTableString, getCreateSequenceString, getCreateSequenceString, getCreateSequenceStrings, getCreateSequenceStrings, getCreateTableString, getCreateTemporaryTablePostfix, getCreateTemporaryTableString, getCurrentTimestampSQLFunctionName, getDefaultProperties, getDialect, getDialect, getDropForeignKeyString, getDropSequenceString, getDropSequenceStrings, getForUpdateNowaitString, getForUpdateNowaitString, getForUpdateString, getForUpdateString, getFunctions, getHibernateTypeName, getHibernateTypeName, getIdentityColumnString, getIdentityInsertString, getIdentitySelectString, getKeywords, getLimitString, getLockingStrategy, getLowercaseFunction, getMaxAliasLength, getNativeIdentifierGeneratorClass, getQuerySequencesString, getSelectClauseNullString, getSelectSequenceNextValString, getSequenceNextValString, getTableComment, getTableTypeString, getTypeName, getTypeName, getViolatedConstraintNameExtracter, hasAlterTable, hasDataTypeInIdentityColumn, hasSelfReferentialForeignKeyBug, performTemporaryTableDDLInIsolation, quote, registerColumnType, registerColumnType, registerFunction, registerHibernateType, registerHibernateType, registerKeyword, supportsBindAsCallableArgument, supportsCascadeDelete, supportsColumnCheck, supportsCommentOn, supportsExpectedLobUsagePattern, supportsIfExistsAfterTableName, supportsIfExistsBeforeTableName, supportsNotNullUnique, supportsOuterJoinForUpdate, supportsParametersInInsertSelect, supportsPooledSequences, supportsRowValueConstructorSyntax, supportsRowValueConstructorSyntaxInInList, supportsSequences, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsUnboundedLobLocatorMaterialization, supportsUnionAll, 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

### SQLServerDialect

    public SQLServerDialect()

Method Detail

### getNoColumnsInsertString

    public String getNoColumnsInsertString()

  Description copied from class: `Dialect`
  The fragment used to insert a row without specifying any column values. This is not possible on some databases.

  Overrides:
    `getNoColumnsInsertString` in class `Dialect`
  Returns:
    The appropriate empty values clause.

### getLimitString

    public String getLimitString(String querySelect,
                                 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 `Dialect`
  Parameters:
    `querySelect` - 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.

### appendIdentitySelectToInsert

    public String appendIdentitySelectToInsert(String insertSQL)

  Use `insert table(...) values(...) select SCOPE_IDENTITY()`

  Overrides:
    `appendIdentitySelectToInsert` in class `SybaseDialect`
  Parameters:
    `insertSQL` - The insert command
  Returns:
    The insert command with any necessary identity select clause attached.

### supportsLimit

    public boolean supportsLimit()

  Description copied from class: `Dialect`
  Does this dialect support some form of limiting query results via a SQL clause?

  Overrides:
    `supportsLimit` in class `Dialect`
  Returns:
    True if this dialect supports some form of LIMIT.

### useMaxForLimit

    public boolean useMaxForLimit()

  Description copied from class: `Dialect`
  Does the `LIMIT` clause take a "maximum" row number instead of a total number of returned rows?

  This is easiest understood via an example. Consider you have a table with 20 rows, but you only want to retrieve rows number 11 through 20. Generally, a limit with offset would say that the offset = 11 and the limit = 10 (we only want 10 rows at a time); this is specifying the total number of returned rows. Some dialects require that we instead specify offset = 11 and limit = 20, where 20 is the "last" row we want relative to offset (i.e. total number of rows = 20 - 11 = 9)

  So essentially, is limit relative from offset? Or is limit absolute?

  Overrides:
    `useMaxForLimit` in class `Dialect`
  Returns:
    True if limit is relative from offset; false otherwise.

### 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 `Dialect`
  Returns:
    True if the dialect supports an offset within the limit support.

### supportsVariableLimit

    public boolean supportsVariableLimit()

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

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

### closeQuote

    public char closeQuote()

  Description copied from class: `Dialect`
  The character specific to this dialect used to close a quoted identifier.

  Overrides:
    `closeQuote` in class `Dialect`
  Returns:
    The dialect's specific close quote character.

### openQuote

    public char openQuote()

  Description copied from class: `Dialect`
  The character specific to this dialect used to begin a quoted identifier.

  Overrides:
    `openQuote` in class `Dialect`
  Returns:
    The dialect's specific open quote character.

### appendLockHint

    public String appendLockHint(LockMode mode,
                                 String tableName)

  Description copied from class: `Dialect`
  Some dialects support an alternative means to `SELECT FOR UPDATE`, whereby a "lock hint" is appends to the table name in the from clause.

  contributed by Helge Schulz

  Overrides:
    `appendLockHint` in class `SybaseDialect`
  Parameters:
    `mode` - The lock mode to apply
    `tableName` - The name of the table to which to apply the lock hint.
  Returns:
    The table with any required lock hints.

### 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.

### getCurrentTimestampSelectString

    public String getCurrentTimestampSelectString()

  Description copied from class: `Dialect`
  Retrieve the command used to retrieve the current timestammp from the database.

  Overrides:
    `getCurrentTimestampSelectString` in class `SybaseDialect`
  Returns:
    The command.

### areStringComparisonsCaseInsensitive

    public boolean areStringComparisonsCaseInsensitive()

  Description copied from class: `Dialect`
  Are string comparisons implicitly case insensitive.

  In other words, does [where 'XYZ' = 'xyz'] resolve to true?

  Overrides:
    `areStringComparisonsCaseInsensitive` in class `Dialect`
  Returns:
    True if comparisons are case insensitive.

### supportsResultSetPositionQueryMethodsOnForwardOnlyCursor

    public boolean supportsResultSetPositionQueryMethodsOnForwardOnlyCursor()

  Description copied from class: `Dialect`
  Does this dialect support asking the result set its positioning information on forward only cursors. Specifically, in the case of scrolling fetches, Hibernate needs to use `ResultSet.isAfterLast()` and `ResultSet.isBeforeFirst()`. Certain drivers do not allow access to these methods for forward only cursors.

  NOTE : this is highly driver dependent!

  Overrides:
    `supportsResultSetPositionQueryMethodsOnForwardOnlyCursor` in class `Dialect`
  Returns:
    True if methods like `ResultSet.isAfterLast()` and `ResultSet.isBeforeFirst()` are supported for forward only cursors; false otherwise.

### supportsCircularCascadeDeleteConstraints

    public boolean supportsCircularCascadeDeleteConstraints()

  Description copied from class: `Dialect`
  Does this dialect support definition of cascade delete constraints which can cause circular chains?

  Overrides:
    `supportsCircularCascadeDeleteConstraints` in class `Dialect`
  Returns:
    True if circular cascade delete constraints are supported; false otherwise.

### supportsLobValueChangePropogation

    public boolean supportsLobValueChangePropogation()

  Description copied from class: `Dialect`
  Does the dialect support propogating changes to LOB values back to the database? Talking about mutating the internal value of the locator as opposed to supplying a new locator instance...

  For BLOBs, the internal value might be changed by: `Blob.setBinaryStream(long)`, `Blob.setBytes(long, byte[])`, `Blob.setBytes(long, byte[], int, int)`, or `Blob.truncate(long)`.

  For CLOBs, the internal value might be changed by: `Clob.setAsciiStream(long)`, `Clob.setCharacterStream(long)`, `Clob.setString(long, String)`, `Clob.setString(long, String, int, int)`, or `Clob.truncate(long)`.

  NOTE : I do not know the correct answer currently for databases which (1) are not part of the cruise control process or (2) do not `Dialect.supportsExpectedLobUsagePattern()`.

  Overrides:
    `supportsLobValueChangePropogation` in class `Dialect`
  Returns:
    True if the changes are propogated back to the database; false otherwise.

### doesReadCommittedCauseWritersToBlockReaders

    public boolean doesReadCommittedCauseWritersToBlockReaders()

  Description copied from class: `Dialect`
  For the underlying database, is READ_COMMITTED isolation implemented by forcing readers to wait for write locks to be released?

  Overrides:
    `doesReadCommittedCauseWritersToBlockReaders` in class `SybaseDialect`
  Returns:
    True if writers block readers to achieve READ_COMMITTED; false otherwise.

### doesRepeatableReadCauseReadersToBlockWriters

    public boolean doesRepeatableReadCauseReadersToBlockWriters()

  Description copied from class: `Dialect`
  For the underlying database, is REPEATABLE_READ isolation implemented by forcing writers to wait for read locks to be released?

  Overrides:
    `doesRepeatableReadCauseReadersToBlockWriters` in class `SybaseDialect`
  Returns:
    True if readers block writers to achieve REPEATABLE_READ; false otherwise.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD