Class SequenceTable
java.lang.Object
org.datanucleus.store.rdbms.table.AbstractTable
org.datanucleus.store.rdbms.table.TableImpl
org.datanucleus.store.rdbms.valuegenerator.SequenceTable
- All Implemented Interfaces:
Table
,org.datanucleus.store.schema.table.Table
Class defining a table for storing generated values for use with TableGenerator.
The table has 2 columns : a primary key String, and a value Long.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate String
private String
private String
private String
the next value column nameprivate JavaTypeMapping
Mapping for the next value columnprivate String
the sequence column nameprivate JavaTypeMapping
Mapping for the sequence name column.Fields inherited from class org.datanucleus.store.rdbms.table.AbstractTable
columns, columnsByIdentifier, dba, existsInDatastore, identifier, state, storeMgr, TABLE_STATE_INITIALIZED, TABLE_STATE_INITIALIZED_MODIFIED, TABLE_STATE_NEW, TABLE_STATE_PK_INITIALIZED, TABLE_STATE_VALIDATED
-
Constructor Summary
ConstructorsConstructorDescriptionSequenceTable
(DatastoreIdentifier identifier, RDBMSStoreManager storeMgr, String seqNameColName, String nextValColName) Constructor -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addSequence
(String sequenceName, Long nextVal, org.datanucleus.store.connection.ManagedConnection conn) Method to insert a row in the SequenceTableAccessor for a mapping for the ID (persistable) for this table.getMemberMapping
(org.datanucleus.metadata.AbstractMemberMetaData mmd) Accessor the for the mapping for a field stored in this tablegetNextVal
(String sequenceName, org.datanucleus.store.connection.ManagedConnection conn, int incrementBy, DatastoreIdentifier tableIdentifier, String columnName, int initialValue) Accessor for the nextval of a sequenceprivate void
incrementSequence
(String sequenceName, long incrementBy, org.datanucleus.store.connection.ManagedConnection conn) Method to increment a sequencevoid
initialize
(org.datanucleus.ClassLoaderResolver clr) Method to initialise the table.Methods inherited from class org.datanucleus.store.rdbms.table.TableImpl
createConstraints, dropConstraints, getExpectedCandidateKeys, getExpectedForeignKeys, getExpectedIndices, getPrimaryKey, getSQLAddCandidateKeyStatements, getSQLAddFKStatements, getSQLCreateIndexStatements, getSQLCreateStatements, getSQLDropStatements, initializeColumnInfoForPrimaryKeyColumns, initializeColumnInfoFromDatastore, logMapping, validate, validateColumns, validateConstraints, validatePrimaryKey
Methods inherited from class org.datanucleus.store.rdbms.table.AbstractTable
addColumn, addColumnInternal, allowDDLOutput, assertIsInitialized, assertIsInitializedModified, assertIsPKInitialized, assertIsPKUninitialized, assertIsUninitialized, assertIsValidated, create, drop, equals, executeDdlStatement, executeDdlStatementList, exists, getCatalogName, getClassMetaData, getColumn, getColumnForName, getColumnForPosition, getColumns, getDatastoreIdentifierFullyQualified, getDiscriminatorMetaData, getIdentifier, getMemberColumnMappingForEmbeddedMember, getMemberColumnMappingForMember, getMemberColumnMappings, getName, getNumberOfColumns, getSchemaName, getStoreManager, getSurrogateColumn, getSurrogateMapping, getVersionMetaData, hasColumn, hasColumnName, hashCode, isInitialized, isInitializedModified, isPKInitialized, isValidated, postInitialize, preInitialize, tableExistsInDatastore, toString
-
Field Details
-
sequenceNameMapping
Mapping for the sequence name column. -
nextValMapping
Mapping for the next value column -
insertStmt
-
incrementByStmt
-
fetchStmt
-
sequenceNameColumnName
the sequence column name -
nextValColumnName
the next value column name
-
-
Constructor Details
-
SequenceTable
public SequenceTable(DatastoreIdentifier identifier, RDBMSStoreManager storeMgr, String seqNameColName, String nextValColName) Constructor- Parameters:
identifier
- Datastore identifier for this tablestoreMgr
- The RDBMSManager for this datastoreseqNameColName
- Name for the "sequence name" columnnextValColName
- Name for the "next value" column
-
-
Method Details
-
initialize
public void initialize(org.datanucleus.ClassLoaderResolver clr) Method to initialise the table.- Parameters:
clr
- The ClassLoaderResolver
-
getIdMapping
Accessor for a mapping for the ID (persistable) for this table.- Returns:
- The (persistable) ID mapping.
-
getNextVal
public Long getNextVal(String sequenceName, org.datanucleus.store.connection.ManagedConnection conn, int incrementBy, DatastoreIdentifier tableIdentifier, String columnName, int initialValue) throws SQLException Accessor for the nextval of a sequence- Parameters:
sequenceName
- The sequence name (the key)conn
- Connection for this datastore.incrementBy
- The amount to increment (from the current value)tableIdentifier
- Identifier for the table being incremented (used when there is no current value)columnName
- Name of the column being incremented (used when there is no current value)initialValue
- Initial value (if not using tableIdentifier/columnName to find the initial value)- Returns:
- The next value that should be used
- Throws:
SQLException
- Thrown when an error occurs in the process.
-
incrementSequence
private void incrementSequence(String sequenceName, long incrementBy, org.datanucleus.store.connection.ManagedConnection conn) throws SQLException Method to increment a sequence- Parameters:
conn
- Connection to the datastore- Throws:
SQLException
- Thrown when an error occurs incrementing the sequence.
-
addSequence
private void addSequence(String sequenceName, Long nextVal, org.datanucleus.store.connection.ManagedConnection conn) throws SQLException Method to insert a row in the SequenceTable- Parameters:
conn
- Connection to the datastore- Throws:
SQLException
- Thrown when an error occurs inserting the sequence.
-
getMemberMapping
Accessor the for the mapping for a field stored in this table- Parameters:
mmd
- MetaData for the field whose mapping we want- Returns:
- The mapping
-