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 Stringprivate Stringprivate Stringprivate Stringthe next value column nameprivate JavaTypeMappingMapping for the next value columnprivate Stringthe sequence column nameprivate JavaTypeMappingMapping for the sequence name column.Fields inherited from class 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 voidaddSequence(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 voidincrementSequence(String sequenceName, long incrementBy, org.datanucleus.store.connection.ManagedConnection conn) Method to increment a sequencevoidinitialize(org.datanucleus.ClassLoaderResolver clr) Method to initialise the table.Methods inherited from class TableImpl
createConstraints, dropConstraints, getExpectedCandidateKeys, getExpectedForeignKeys, getExpectedIndices, getPrimaryKey, getSQLAddCandidateKeyStatements, getSQLAddFKStatements, getSQLCreateIndexStatements, getSQLCreateStatements, getSQLDropStatements, initializeColumnInfoForPrimaryKeyColumns, initializeColumnInfoFromDatastore, logMapping, validate, validateColumns, validateConstraints, validatePrimaryKeyMethods inherited from class 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
-