## org.hibernate.dialect
Class DerbyDialect

    java.lang.Object
      org.hibernate.dialect.Dialect
          org.hibernate.dialect.DB2Dialect
              org.hibernate.dialect.DerbyDialect

    public class DerbyDialect

extends DB2Dialect

Hibernate Dialect for Cloudscape 10 - aka Derby. This implements both an override for the identity column generator as well as for the case statement issue documented at: http://www.jroller.com/comments/kenlars99/Weblog/cloudscape_soon_to_be_derby

Author:
  Simon Johnston

Field Summary

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

Constructor Summary
`DerbyDialect()`

Method Summary
`CaseFragment` `createCaseFragment()` Return the case statement modified for Cloudscape.
`boolean` `dropConstraints()` Do we need to drop constraints before dropping tables in this dialect?
`String` `getCrossJoinSeparator()` Get the separator to use for defining cross joins when translating HQL queries.
`String` `getForUpdateString()` Get the string to append to SELECT statements to acquire locks for this dialect.
`String` `getLimitString(String query, int offset, int limit)` Given a limit and an offset, apply the limit clause to the query.
`String` `getQuerySequencesString()` Get the select command used retrieve the names of all sequences.
`String` `getReadLockString(int timeout)` Get the string to append to SELECT statements to acquire WRITE locks for this dialect.
`String` `getSequenceNextValString(String sequenceName)` Generate the appropriate select statement to to retrieve the next value of a sequence.
`String` `getWriteLockString(int timeout)` Get the string to append to SELECT statements to acquire WRITE locks for this dialect.
`boolean` `supportsCommentOn()`
`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 propagating 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` `supportsSequences()` Does this dialect support sequences?
`boolean` `supportsUnboundedLobLocatorMaterialization()` Is it supported to materialize a LOB locator outside the transaction in which it was created? Again, part of the trickiness here is the fact that this is largely driver dependent.
`boolean` `supportsVariableLimit()` Does this dialect support bind variables (i.e., prepared statement parameters) for its limit/offset?

Methods inherited from class org.hibernate.dialect.DB2Dialect

`convertToFirstRowValue, doesReadCommittedCauseWritersToBlockReaders, generateTemporaryTableName, getAddColumnString, getCreateSequenceString, getCreateTemporaryTablePostfix, getCreateTemporaryTableString, getCurrentTimestampSelectString, getDropSequenceString, getIdentityColumnString, getIdentityInsertString, getIdentitySelectString, getLimitString, getLowercaseFunction, getResultSet, getSelectClauseNullString, isCurrentTimestampSelectStringCallable, main, registerResultSetOutParameter, requiresCastingOfParametersInSelectClause, supportsCurrentTimestampSelection, supportsEmptyInList, supportsIdentityColumns, supportsNotNullUnique, supportsOuterJoinForUpdate, supportsParametersInInsertSelect, supportsPooledSequences, supportsResultSetPositionQueryMethodsOnForwardOnlyCursor, supportsTemporaryTables, supportsTupleDistinctCounts, supportsUnionAll, useMaxForLimit`

Methods inherited from class org.hibernate.dialect.Dialect

`addTypeOverride, appendIdentitySelectToInsert, appendLockHint, applyLocksToSql, areStringComparisonsCaseInsensitive, bindLimitParametersFirst, bindLimitParametersInReverseOrder, buildSQLExceptionConverter, closeQuote, createOuterJoinFragment, doesRepeatableReadCauseReadersToBlockWriters, dropTemporaryTableAfterUse, forceLimitUsage, forUpdateOfColumns, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getCascadeConstraintsString, getCastTypeName, getColumnAliasExtractor, getColumnComment, getCreateMultisetTableString, getCreateSequenceString, getCreateSequenceStrings, getCreateSequenceStrings, getCreateTableString, getCurrentTimestampSQLFunctionName, getDefaultProperties, getDialect, getDialect, getDropForeignKeyString, getDropSequenceStrings, getDropTemporaryTableString, getForUpdateNowaitString, getForUpdateNowaitString, getForUpdateString, getForUpdateString, getForUpdateString, getForUpdateString, getFunctions, getHibernateTypeName, getHibernateTypeName, getIdentityColumnString, getIdentitySelectString, getKeywords, getLockingStrategy, getMaxAliasLength, getNativeIdentifierGeneratorClass, getNoColumnsInsertString, getNullColumnString, getSelectGUIDString, getSelectSequenceNextValString, getTableComment, getTableTypeString, getTypeName, getTypeName, getTypeOverrides, getViolatedConstraintNameExtracter, hasAlterTable, hasDataTypeInIdentityColumn, hasSelfReferentialForeignKeyBug, isLockTimeoutParameterized, openQuote, performTemporaryTableDDLInIsolation, qualifyIndexName, quote, registerColumnType, registerColumnType, registerFunction, registerHibernateType, registerHibernateType, registerKeyword, replaceResultVariableInOrderByClauseWithPosition, supportsBindAsCallableArgument, supportsCascadeDelete, supportsCircularCascadeDeleteConstraints, supportsColumnCheck, supportsExistsInSelect, supportsExpectedLobUsagePattern, supportsIfExistsAfterTableName, supportsIfExistsBeforeTableName, supportsInsertSelectIdentity, supportsLockTimeouts, supportsRowValueConstructorSyntax, supportsRowValueConstructorSyntaxInInList, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsTupleCounts, 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

### DerbyDialect

    public DerbyDialect()

Method Detail

### getCrossJoinSeparator

    public String getCrossJoinSeparator()

  Description copied from class: `Dialect`
  Get the separator to use for defining cross joins when translating HQL queries.

  Typically this will be either [`cross join` ] or [`,` ]

  Note that the spaces are important!

  Overrides:
    `getCrossJoinSeparator` in class `DB2Dialect`
  Returns:

### createCaseFragment

    public CaseFragment createCaseFragment()

  Return the case statement modified for Cloudscape.

  Overrides:
    `createCaseFragment` in class `Dialect`
  Returns:
    This dialect's `CaseFragment` strategy.

### dropConstraints

    public boolean dropConstraints()

  Description copied from class: `Dialect`
  Do we need to drop constraints before dropping tables in this dialect?

  Overrides:
    `dropConstraints` in class `DB2Dialect`
  Returns:
    True if constraints must be dropped prior to dropping the table; false otherwise.

### supportsSequences

    public boolean supportsSequences()

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

  Overrides:
    `supportsSequences` in class `DB2Dialect`
  Returns:
    True if sequences supported; false otherwise.

### getSequenceNextValString

    public String getSequenceNextValString(String sequenceName)

  Description copied from class: `Dialect`
  Generate the appropriate select statement to to retrieve the next value of a sequence.

  This should be a "stand alone" select statement.

  Overrides:
    `getSequenceNextValString` in class `DB2Dialect`
  Parameters:
    `sequenceName` - the name of the sequence
  Returns:
    String The "nextval" select string.

### 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 `DB2Dialect`
  Returns:
    True if this dialect supports some form of LIMIT.

### supportsCommentOn

    public boolean supportsCommentOn()

  Overrides:
    `supportsCommentOn` in class `DB2Dialect`

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

### 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 `DB2Dialect`
  Returns:
    The appropriate `FOR UPDATE` clause string.

### getWriteLockString

    public String getWriteLockString(int timeout)

  Description copied from class: `Dialect`
  Get the string to append to SELECT statements to acquire WRITE locks for this dialect. Location of the of the returned string is treated the same as getForUpdateString.

  Overrides:
    `getWriteLockString` in class `Dialect`
  Parameters:
    `timeout` - in milliseconds, -1 for indefinite wait and 0 for no wait.
  Returns:
    The appropriate `LOCK` clause string.

### getReadLockString

    public String getReadLockString(int timeout)

  Description copied from class: `Dialect`
  Get the string to append to SELECT statements to acquire WRITE locks for this dialect. Location of the of the returned string is treated the same as getForUpdateString.

  Overrides:
    `getReadLockString` in class `Dialect`
  Parameters:
    `timeout` - in milliseconds, -1 for indefinite wait and 0 for no wait.
  Returns:
    The appropriate `LOCK` clause string.

### getLimitString

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

  Given a limit and an offset, apply the limit clause to the query.

  From Derby 10.5 Docs:

       Query
       [ORDER BY clause]
       [result offset clause]
       [fetch first clause]
       [FOR UPDATE clause]
       [WITH {RR|RS|CS|UR}]

  Overrides:
    `getLimitString` in class `Dialect`
  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.

### 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 `Dialect`
  Returns:
    True if bind variables can be used; false otherwise.

### getQuerySequencesString

    public String getQuerySequencesString()

  Description copied from class: `Dialect`
  Get the select command used retrieve the names of all sequences.

  Overrides:
    `getQuerySequencesString` in class `DB2Dialect`
  Returns:
    The select command; or null if sequences are not supported.
  See Also:
    `SchemaUpdate`

### supportsLobValueChangePropogation

    public boolean supportsLobValueChangePropogation()

  Description copied from class: `Dialect`
  Does the dialect support propagating 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 `DB2Dialect`
  Returns:
    True if the changes are propagated back to the database; false otherwise.

### supportsUnboundedLobLocatorMaterialization

    public boolean supportsUnboundedLobLocatorMaterialization()

  Description copied from class: `Dialect`
  Is it supported to materialize a LOB locator outside the transaction in which it was created?

  Again, part of the trickiness here is the fact that this is largely driver dependent.

  NOTE: all database I have tested which `Dialect.supportsExpectedLobUsagePattern()` also support the ability to materialize a LOB outside the owning transaction...

  Overrides:
    `supportsUnboundedLobLocatorMaterialization` in class `Dialect`
  Returns:
    True if unbounded materialization is supported; false otherwise.

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