org.springframework.jdbc.support.incrementer

## Class AbstractSequenceMaxValueIncrementer

- java.lang.Object
- - org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer
  - - org.springframework.jdbc.support.incrementer.AbstractSequenceMaxValueIncrementer

- All Implemented Interfaces:
    InitializingBean, DataFieldMaxValueIncrementer
  Direct Known Subclasses:
    DB2MainframeSequenceMaxValueIncrementer, DB2SequenceMaxValueIncrementer, H2SequenceMaxValueIncrementer, HsqlSequenceMaxValueIncrementer, OracleSequenceMaxValueIncrementer, PostgreSQLSequenceMaxValueIncrementer

      public abstract class AbstractSequenceMaxValueIncrementer
      extends AbstractDataFieldMaxValueIncrementer

  Abstract base class for `DataFieldMaxValueIncrementer` implementations that use a database sequence. Subclasses need to provide the database-specific SQL to use.
  Since:
    26.02.2004
  Author:
    Juergen Hoeller
  See Also:
    `getSequenceQuery()`

- - ### Field Summary

    - ### Fields inherited from class org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer

      `paddingLength`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractSequenceMaxValueIncrementer()` Default constructor for bean property style usage.
    `AbstractSequenceMaxValueIncrementer(DataSource dataSource, String incrementerName)` Convenience constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected long` | `getNextKey()` Executes the SQL as specified by `getSequenceQuery()`.
    `protected abstract String` | `getSequenceQuery()` Return the database-specific query to use for retrieving a sequence value.

    - ### Methods inherited from class org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer

      `afterPropertiesSet, getDataSource, getIncrementerName, getPaddingLength, nextIntValue, nextLongValue, nextStringValue, setDataSource, setIncrementerName, setPaddingLength`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractSequenceMaxValueIncrementer

          public AbstractSequenceMaxValueIncrementer()

      Default constructor for bean property style usage.
      See Also:
        `AbstractDataFieldMaxValueIncrementer.setDataSource(javax.sql.DataSource)`, `AbstractDataFieldMaxValueIncrementer.setIncrementerName(java.lang.String)`

    - #### AbstractSequenceMaxValueIncrementer

          public AbstractSequenceMaxValueIncrementer(DataSource dataSource,
                                             String incrementerName)

      Convenience constructor.
      Parameters:
        `dataSource` - the DataSource to use
        `incrementerName` - the name of the sequence/table to use

  - ### Method Detail

    - #### getNextKey

          protected long getNextKey()
                             throws DataAccessException

      Executes the SQL as specified by `getSequenceQuery()`.
      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`

    - #### getSequenceQuery

          protected abstract String getSequenceQuery()

      Return the database-specific query to use for retrieving a sequence value.

      The provided SQL is supposed to result in a single row with a single column that allows for extracting a `long` value.