org.hibernate.dialect
Class Oracle9iDialect

java.lang.Object
  extended by org.hibernate.dialect.Dialect
      extended by org.hibernate.dialect.Oracle8iDialect
          extended by org.hibernate.dialect.Oracle9iDialect
Direct Known Subclasses:
Oracle10gDialect

public class Oracle9iDialect
extends Oracle8iDialect

A dialect for Oracle 9i databases.

Unlike the older (deprecated) {@Link Oracl9Dialect), this version specifies to not use "ANSI join syntax" because 9i does not seem to properly handle it in all cases.

Author:
Steve Ebersole

Field Summary
 
Fields inherited from class org.hibernate.dialect.Dialect
CLOSED_QUOTE, DEFAULT_BATCH_SIZE, NO_BATCH, QUOTE
 
Constructor Summary
Oracle9iDialect()
           
 
Method Summary
 CaseFragment createCaseFragment()
          Map case support to the Oracle DECODE function.
 String getCurrentTimestampSelectString()
          Retrieve the command used to retrieve the current timestammp from the database.
 String getCurrentTimestampSQLFunctionName()
          The name of the database-specific SQL function for retrieving the current timestamp.
 String getLimitString(String sql, boolean hasOffset)
          Apply s limit clause to the query.
 String getSelectClauseNullString(int sqlType)
          Given a Types type code, determine an appropriate null value to use in a select clause.
protected  void registerCharacterTypeMappings()
           
protected  void registerDateTimeTypeMappings()
           
 
Methods inherited from class org.hibernate.dialect.Oracle8iDialect
bindLimitParametersInReverseOrder, createOuterJoinFragment, dropConstraints, dropTemporaryTableAfterUse, forUpdateOfColumns, generateTemporaryTableName, getAddColumnString, getBasicSelectClauseNullString, getCascadeConstraintsString, getCreateSequenceString, getCreateTemporaryTablePostfix, getCreateTemporaryTableString, getDropSequenceString, getForUpdateNowaitString, getForUpdateNowaitString, getForUpdateString, getQuerySequencesString, getResultSet, getSelectGUIDString, getSelectSequenceNextValString, getSequenceNextValString, getViolatedConstraintNameExtracter, isCurrentTimestampSelectStringCallable, registerDefaultProperties, registerFunctions, registerLargeObjectTypeMappings, registerNumericTypeMappings, registerResultSetOutParameter, registerReverseHibernateTypeMappings, supportsCommentOn, supportsCurrentTimestampSelection, supportsEmptyInList, supportsExistsInSelect, supportsLimit, supportsPooledSequences, supportsSequences, supportsTemporaryTables, supportsUnionAll, useMaxForLimit
 
Methods inherited from class org.hibernate.dialect.Dialect
appendIdentitySelectToInsert, appendLockHint, applyLocksToSql, areStringComparisonsCaseInsensitive, bindLimitParametersFirst, buildSQLExceptionConverter, closeQuote, doesReadCommittedCauseWritersToBlockReaders, doesRepeatableReadCauseReadersToBlockWriters, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getCastTypeName, getColumnComment, getCreateMultisetTableString, getCreateSequenceString, getCreateSequenceStrings, getCreateSequenceStrings, getCreateTableString, getDefaultProperties, getDialect, getDialect, getDropForeignKeyString, getDropSequenceStrings, getForUpdateString, getForUpdateString, getFunctions, getHibernateTypeName, getHibernateTypeName, getIdentityColumnString, getIdentityColumnString, getIdentityInsertString, getIdentitySelectString, getIdentitySelectString, getKeywords, getLimitString, getLockingStrategy, getLowercaseFunction, getMaxAliasLength, getNativeIdentifierGeneratorClass, getNoColumnsInsertString, getNullColumnString, getTableComment, getTableTypeString, getTypeName, getTypeName, hasAlterTable, hasDataTypeInIdentityColumn, hasSelfReferentialForeignKeyBug, openQuote, performTemporaryTableDDLInIsolation, qualifyIndexName, quote, registerColumnType, registerColumnType, registerFunction, registerHibernateType, registerHibernateType, registerKeyword, supportsBindAsCallableArgument, supportsCascadeDelete, supportsCircularCascadeDeleteConstraints, supportsColumnCheck, supportsExpectedLobUsagePattern, supportsIdentityColumns, supportsIfExistsAfterTableName, supportsIfExistsBeforeTableName, supportsInsertSelectIdentity, supportsLimitOffset, supportsLobValueChangePropogation, supportsNotNullUnique, supportsOuterJoinForUpdate, supportsParametersInInsertSelect, supportsResultSetPositionQueryMethodsOnForwardOnlyCursor, supportsRowValueConstructorSyntax, supportsRowValueConstructorSyntaxInInList, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsUnboundedLobLocatorMaterialization, supportsUnique, supportsUniqueConstraintInCreateAlterTable, supportsVariableLimit, toBooleanValueString, toString, transformSelectString, useInputStreamToInsertBlob
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Oracle9iDialect

public Oracle9iDialect()
Method Detail

registerCharacterTypeMappings

protected void registerCharacterTypeMappings()
Overrides:
registerCharacterTypeMappings in class Oracle8iDialect

registerDateTimeTypeMappings

protected void registerDateTimeTypeMappings()
Overrides:
registerDateTimeTypeMappings in class Oracle8iDialect

createCaseFragment

public CaseFragment createCaseFragment()
Description copied from class: Oracle8iDialect
Map case support to the Oracle DECODE function. Oracle did not add support for CASE until 9i.

Overrides:
createCaseFragment in class Oracle8iDialect
Returns:
The oracle CASE -> DECODE fragment

getLimitString

public String getLimitString(String sql,
                             boolean hasOffset)
Description copied from class: Dialect
Apply s limit clause to the query.

Typically dialects utilize variable limit caluses when they support limits. Thus, when building the select command we do not actually need to know the limit or the offest since we will just be using placeholders.

Here we do still pass along whether or not an offset was specified so that dialects not supporting offsets can generate proper exceptions. In general, dialects will override one or the other of this method and Dialect.getLimitString(String, int, int).

Overrides:
getLimitString in class Oracle8iDialect
Parameters:
sql - The query to which to apply the limit.
hasOffset - Is the query requesting an offset?
Returns:
the modified SQL

getSelectClauseNullString

public String getSelectClauseNullString(int sqlType)
Description copied from class: Dialect
Given a Types type code, determine an appropriate null value to use in a select clause.

One thing to consider here is that certain databases might require proper casting for the nulls here since the select here will be part of a UNION/UNION ALL.

Overrides:
getSelectClauseNullString in class Oracle8iDialect
Parameters:
sqlType - The Types type code.
Returns:
The appropriate select clause value fragment.

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 Oracle8iDialect
Returns:
The command.

getCurrentTimestampSQLFunctionName

public String getCurrentTimestampSQLFunctionName()
Description copied from class: Dialect
The name of the database-specific SQL function for retrieving the current timestamp.

Overrides:
getCurrentTimestampSQLFunctionName in class Oracle8iDialect
Returns:
The function name.