org.springframework.jdbc.support.incrementer

## Class HsqlMaxValueIncrementer

- java.lang.Object
- - org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer
  - - org.springframework.jdbc.support.incrementer.AbstractColumnMaxValueIncrementer
    - - org.springframework.jdbc.support.incrementer.HsqlMaxValueIncrementer

All Implemented Interfaces:
  InitializingBean, DataFieldMaxValueIncrementer

    public class HsqlMaxValueIncrementer
    extends AbstractColumnMaxValueIncrementer

`DataFieldMaxValueIncrementer` that increments the maximum value of a given HSQL table with the equivalent of an auto-increment column. Note: If you use this class, your HSQL key column should NOT be auto-increment, as the sequence table does the job.

The sequence is kept in a table. There should be one sequence table per table that needs an auto-generated key.

Example:

    create table tab (id int not null primary key, text varchar(100));
     create table tab_sequence (value identity);
     insert into tab_sequence values(0);

If "cacheSize" is set, the intermediate values are served without querying the database. If the server or your application is stopped or crashes or a transaction is rolled back, the unused values will never be served. The maximum hole size in numbering is consequently the value of cacheSize.

NOTE: HSQL now supports sequences and you should consider using them instead: `HsqlSequenceMaxValueIncrementer`

Author:
  Jean-Pierre Pawlak, Thomas Risberg, Juergen Hoeller
See Also:
  `HsqlSequenceMaxValueIncrementer`

### Field Summary

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

`paddingLength`

### Constructor Summary

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

### Method Summary

Methods
`protected long` `getNextKey()` Determine the next key to use, as a long.

### Methods inherited from class org.springframework.jdbc.support.incrementer.AbstractColumnMaxValueIncrementer

`afterPropertiesSet, getCacheSize, getColumnName, setCacheSize, setColumnName`

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

`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

#### HsqlMaxValueIncrementer

    public HsqlMaxValueIncrementer()

Default constructor for bean property style usage.

See Also:
  `AbstractDataFieldMaxValueIncrementer.setDataSource(javax.sql.DataSource)`, `AbstractDataFieldMaxValueIncrementer.setIncrementerName(java.lang.String)`, `AbstractColumnMaxValueIncrementer.setColumnName(java.lang.String)`

#### HsqlMaxValueIncrementer

    public HsqlMaxValueIncrementer(DataSource dataSource,
                           String incrementerName,
                           String columnName)

Convenience constructor.

Parameters:
  `dataSource` - the DataSource to use
  `incrementerName` - the name of the sequence/table to use
  `columnName` - the name of the column in the sequence table to use

### Method Detail

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