Class AbstractIdentityColumnMaxValueIncrementer

All Implemented Interfaces:
InitializingBean, DataFieldMaxValueIncrementer
Direct Known Subclasses:
DerbyMaxValueIncrementer, HsqlMaxValueIncrementer, MySQLIdentityColumnMaxValueIncrementer, SqlServerMaxValueIncrementer, SybaseMaxValueIncrementer

public abstract class AbstractIdentityColumnMaxValueIncrementer extends AbstractColumnMaxValueIncrementer
Abstract base class for DataFieldMaxValueIncrementer implementations which are based on identity columns in a sequence-like table.
Since:
4.1.2
Author:
Juergen Hoeller, Thomas Risberg
  • Constructor Details

  • Method Details

    • setDeleteSpecificValues

      public void setDeleteSpecificValues(boolean deleteSpecificValues)
      Specify whether to delete the entire range below the current maximum key value (false - the default), or the specifically generated values (true). The former mode will use a where range clause whereas the latter will use an in clause starting with the lowest value minus 1, just preserving the maximum value.
    • isDeleteSpecificValues

      public boolean isDeleteSpecificValues()
      Return whether to delete the entire range below the current maximum key value (false - the default), or the specifically generated values (true).
    • getNextKey

      protected long getNextKey() throws DataAccessException
      Description copied from class: AbstractDataFieldMaxValueIncrementer
      Determine the next key to use, as a long.
      Specified by:
      getNextKey in class AbstractDataFieldMaxValueIncrementer
      Returns:
      the key to use as a long. It will eventually be converted later in another format by the public concrete methods of this class.
      Throws:
      DataAccessException
    • getIncrementStatement

      protected abstract String getIncrementStatement()
      Statement to use to increment the "sequence" value.
      Returns:
      the SQL statement to use
    • getIdentityStatement

      protected abstract String getIdentityStatement()
      Statement to use to obtain the current identity value.
      Returns:
      the SQL statement to use
    • getDeleteStatement

      protected String getDeleteStatement(long[] values)
      Statement to use to clean up "sequence" values.

      The default implementation either deletes the entire range below the current maximum value, or the specifically generated values (starting with the lowest minus 1, just preserving the maximum value) - according to the isDeleteSpecificValues() setting.

      Parameters:
      values - the currently generated key values (the number of values corresponds to AbstractColumnMaxValueIncrementer.getCacheSize())
      Returns:
      the SQL statement to use