@Override protected String getCreateSequenceString(String sequenceName, int initialValue, int incrementSize) throws MappingException { if ( incrementSize == 0 ) { throw new MappingException( "Unable to create the sequence [" + sequenceName + "]: the increment size must not be 0" ); } String createSequenceString = getCreateSequenceString( sequenceName ) + " start with " + initialValue + " increment by " + incrementSize; if ( incrementSize > 0 ) { if ( initialValue < 1 ) { // default minvalue for an ascending sequence is 1 createSequenceString += " minvalue " + initialValue; } } else if ( incrementSize < 0 ) { if ( initialValue > -1 ) { // default maxvalue for a descending sequence is -1 createSequenceString += " maxvalue " + initialValue; } } return createSequenceString; }
@Override public String[] getSqlCreateStrings(org.hibernate.mapping.Table table, org.hibernate.boot.Metadata metadata) { String[] sqlCreateStrings = super.getSqlCreateStrings( table, metadata ); return quoteTypeIfNecessary( table, sqlCreateStrings, getCreateTableString() ); }
@SuppressWarnings({ "deprecation" }) private String getForUpdateString(String aliases, LockMode lockMode, int timeout) { switch ( lockMode ) { case UPGRADE: return getForUpdateString( aliases ); case PESSIMISTIC_READ: return getReadLockString( aliases, timeout ); case PESSIMISTIC_WRITE: return getWriteLockString( aliases, timeout ); case UPGRADE_NOWAIT: case FORCE: case PESSIMISTIC_FORCE_INCREMENT: return getForUpdateNowaitString( aliases ); case UPGRADE_SKIPLOCKED: return getForUpdateSkipLockedString( aliases ); default: return ""; } }
@Override public String getWriteLockString(String aliases, int timeout) { if ( timeout > 0 ) { return getForUpdateString( aliases ) + " wait " + getLockWaitTimeoutInSeconds( timeout ); } else if ( timeout == 0 ) { return getForUpdateNowaitString( aliases ); } else { return getForUpdateString( aliases ); } }
registerColumnType( Types.DECIMAL, "decimal($p, $s)" ); registerColumnType( Types.NUMERIC, "decimal($p, $s)" ); registerColumnType( Types.DOUBLE, "double" ); registerColumnType( Types.BINARY, 5000, "varbinary($l)" ); registerColumnType( Types.VARBINARY, 5000, "varbinary($l)" ); registerColumnType( Types.LONGVARBINARY, 5000, "varbinary($l)" ); registerColumnType( Types.BINARY, "blob" ); registerColumnType( Types.VARBINARY, "blob" ); registerColumnType( Types.LONGVARBINARY, "blob" ); registerColumnType( Types.CHAR, "varchar(1)" ); registerColumnType( Types.NCHAR, "nvarchar(1)" ); registerColumnType( Types.VARCHAR, 5000, "varchar($l)" ); registerColumnType( Types.LONGVARCHAR, 5000, "varchar($l)" ); registerColumnType( Types.NVARCHAR, 5000, "nvarchar($l)" ); registerColumnType( Types.LONGNVARCHAR, 5000, "nvarchar($l)" ); registerColumnType( Types.LONGVARCHAR, "clob" ); registerColumnType( Types.VARCHAR, "clob" ); registerColumnType( Types.LONGNVARCHAR, "nclob" ); registerColumnType( Types.NVARCHAR, "nclob" ); registerColumnType( Types.CLOB, "clob" ); registerColumnType( Types.NCLOB, "nclob" ); registerColumnType( Types.BOOLEAN, "boolean" ); registerColumnType( Types.BIT, "smallint" );
@Override public String getForUpdateNowaitString() { return getForUpdateString() + " nowait"; }
builder.applyReservedWords( getKeywords() ); builder.setNameQualifierSupport( getNameQualifierSupport() );
@Override public String getWriteLockString(int timeout) { if ( timeout > 0 ) { return getForUpdateString() + " wait " + timeout; } else if ( timeout == 0 ) { return getForUpdateNowaitString(); } else { return getForUpdateString(); } }
@Override public String getSequenceNextValString(final String sequenceName) { return "select " + getSelectSequenceNextValString( sequenceName ) + " from sys.dummy"; }
registerColumnType( Types.DECIMAL, "decimal($p, $s)" ); registerColumnType( Types.NUMERIC, "decimal($p, $s)" ); registerColumnType( Types.DOUBLE, "double" ); registerColumnType( Types.BINARY, 5000, "varbinary($l)" ); registerColumnType( Types.VARBINARY, 5000, "varbinary($l)" ); registerColumnType( Types.LONGVARBINARY, 5000, "varbinary($l)" ); registerColumnType( Types.BINARY, "blob" ); registerColumnType( Types.VARBINARY, "blob" ); registerColumnType( Types.LONGVARBINARY, "blob" ); registerColumnType( Types.CHAR, "varchar(1)" ); registerColumnType( Types.NCHAR, "nvarchar(1)" ); registerColumnType( Types.VARCHAR, 5000, "varchar($l)" ); registerColumnType( Types.LONGVARCHAR, 5000, "varchar($l)" ); registerColumnType( Types.NVARCHAR, 5000, "nvarchar($l)" ); registerColumnType( Types.LONGNVARCHAR, 5000, "nvarchar($l)" ); registerColumnType( Types.LONGVARCHAR, "clob" ); registerColumnType( Types.VARCHAR, "clob" ); registerColumnType( Types.LONGNVARCHAR, "nclob" ); registerColumnType( Types.NVARCHAR, "nclob" ); registerColumnType( Types.CLOB, "clob" ); registerColumnType( Types.NCLOB, "nclob" ); registerColumnType( Types.BOOLEAN, "boolean" ); registerColumnType( Types.BIT, "smallint" );
@Override public String getWriteLockString(int timeout) { long timeoutInSeconds = getLockWaitTimeoutInSeconds( timeout ); if ( timeoutInSeconds > 0 ) { return getForUpdateString() + " wait " + timeoutInSeconds; } else if ( timeoutInSeconds == 0 ) { return getForUpdateNowaitString(); } else { return getForUpdateString(); } }
@Override public String getForUpdateString(final String aliases) { return getForUpdateString() + " of " + aliases; }
builder.applyReservedWords( getKeywords() ); builder.setNameQualifierSupport( getNameQualifierSupport() );
@Override public String getWriteLockString(String aliases, int timeout) { if ( timeout > 0 ) { return getForUpdateString( aliases ) + " wait " + timeout; } else if ( timeout == 0 ) { return getForUpdateNowaitString( aliases ); } else { return getForUpdateString( aliases ); } }
@Override public String getSequenceNextValString(final String sequenceName) { return "select " + getSelectSequenceNextValString( sequenceName ) + " from sys.dummy"; }
@SuppressWarnings({ "deprecation" }) private String getForUpdateString(String aliases, LockMode lockMode, int timeout) { switch ( lockMode ) { case UPGRADE: return getForUpdateString( aliases ); case PESSIMISTIC_READ: return getReadLockString( aliases, timeout ); case PESSIMISTIC_WRITE: return getWriteLockString( aliases, timeout ); case UPGRADE_NOWAIT: case FORCE: case PESSIMISTIC_FORCE_INCREMENT: return getForUpdateNowaitString( aliases ); case UPGRADE_SKIPLOCKED: return getForUpdateSkipLockedString( aliases ); default: return ""; } }
@Override public String getForUpdateNowaitString(String aliases) { return getForUpdateString( aliases ) + " nowait"; }
@Override public String[] getSqlCreateStrings(ExportableTable table, JdbcServices jdbcServices) { String[] sqlCreateStrings = super.getSqlCreateStrings( table, jdbcServices ); return quoteTypeIfNecessary( table, sqlCreateStrings, getCreateTableString() ); }
@Override protected String getCreateSequenceString(String sequenceName, int initialValue, int incrementSize) throws MappingException { if ( incrementSize == 0 ) { throw new MappingException( "Unable to create the sequence [" + sequenceName + "]: the increment size must not be 0" ); } String createSequenceString = getCreateSequenceString( sequenceName ) + " start with " + initialValue + " increment by " + incrementSize; if ( incrementSize > 0 ) { if ( initialValue < 1 ) { // default minvalue for an ascending sequence is 1 createSequenceString += " minvalue " + initialValue; } } else if ( incrementSize < 0 ) { if ( initialValue > -1 ) { // default maxvalue for a descending sequence is -1 createSequenceString += " maxvalue " + initialValue; } } return createSequenceString; }
@Override public String getForUpdateString(final String aliases, final LockOptions lockOptions) { LockMode lockMode = lockOptions.findGreatestLockMode(); lockOptions.setLockMode( lockMode ); // not sure why this is sometimes empty if ( aliases == null || aliases.isEmpty() ) { return getForUpdateString( lockOptions ); } return getForUpdateString( aliases, lockMode, lockOptions.getTimeOut() ); }