org.hibernate.id

Class SequenceIdentityGenerator

Implemented Interfaces:
Configurable, IdentifierGenerator, PersistentIdentifierGenerator, PostInsertIdentifierGenerator

public class SequenceIdentityGenerator
extends SequenceGenerator
implements PostInsertIdentifierGenerator

A generator which combines sequence generation with immediate retrieval through JDBC3 getGeneratedKeys. In this respect it works much like ANSI-SQL IDENTITY generation.

This generator only known to work with newer Oracle drivers compiled for JDK 1.4 (JDBC3).

Note: Due to a bug in Oracle drivers, sql comments on these insert statements are completely disabled.

Author:
Steve Ebersole

Nested Class Summary

static class
SequenceIdentityGenerator.Delegate
static class
SequenceIdentityGenerator.NoCommentsInsert

Field Summary

Fields inherited from class org.hibernate.id.SequenceGenerator

PARAMETERS, SEQUENCE

Fields inherited from interface org.hibernate.id.IdentifierGenerator

ENTITY_NAME

Fields inherited from interface org.hibernate.id.PersistentIdentifierGenerator

CATALOG, PK, SCHEMA, SQL_STATEMENT_LOGGER, TABLE, TABLES

Method Summary

void
configure(Type type, Properties params, Dialect dialect)
Configure this instance, given the value of parameters specified by the user as <param> elements.
Serializable
generate(SessionImplementor s, Object obj)
Generate a new identifier.
InsertGeneratedIdentifierDelegate
getInsertGeneratedIdentifierDelegate(PostInsertIdentityPersister persister, Dialect dialect, boolean isGetGeneratedKeysEnabled)

Methods inherited from class org.hibernate.id.SequenceGenerator

configure, generate, generatorKey, getSequenceName, sqlCreateStrings, sqlDropStrings

Method Details

configure

public void configure(Type type,
                      Properties params,
                      Dialect dialect)
            throws MappingException
Configure this instance, given the value of parameters specified by the user as <param> elements. This method is called just once, following instantiation.
Specified by:
configure in interface Configurable
Overrides:
configure in interface SequenceGenerator
Parameters:
params - param values, keyed by parameter name

generate

public Serializable generate(SessionImplementor s,
                             Object obj)
Generate a new identifier.
Specified by:
generate in interface IdentifierGenerator
Overrides:
generate in interface SequenceGenerator
Parameters:
Returns:
a new identifier

getInsertGeneratedIdentifierDelegate

public InsertGeneratedIdentifierDelegate getInsertGeneratedIdentifierDelegate(PostInsertIdentityPersister persister,
                                                                              Dialect dialect,
                                                                              boolean isGetGeneratedKeysEnabled)
            throws HibernateException
Specified by:
getInsertGeneratedIdentifierDelegate in interface PostInsertIdentifierGenerator