Class CollectionTable
java.lang.Object
org.datanucleus.store.rdbms.table.AbstractTable
org.datanucleus.store.rdbms.table.TableImpl
org.datanucleus.store.rdbms.table.JoinTable
org.datanucleus.store.rdbms.table.ElementContainerTable
org.datanucleus.store.rdbms.table.CollectionTable
- All Implemented Interfaces:
Table, org.datanucleus.store.schema.table.Table
Representation of a join table for a Collection. A Collection covers a wide range of possibilities
in terms of whether it allows duplicates or not, whether it allows nulls or not, whether it supports
ordering via indexes, whether it supports ordering via a SELECT criteria, etc. Consequently the
join table can vary depending on the required capabilities.
JoinTable Mappings
The join table consists of the following mappings :-
- ownerMapping linking back to the owning class with the Collection.
- elementMapping either being an FK link to the element table or being an embedded/serialised element stored wholly in this table.
- orderMapping which may be null, or otherwise stores an index for the elements. This is either to provide uniqueness or ordering in a List (and part of the PK).
-
Field Summary
Fields inherited from class ElementContainerTable
elementMapping, orderMapping, relationDiscriminatorMapping, relationDiscriminatorValueFields inherited from class JoinTable
mmd, ownerMapping, ownerTable, ownerTypeFields 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
ConstructorsConstructorDescriptionCollectionTable(Table ownerTable, DatastoreIdentifier tableName, org.datanucleus.metadata.AbstractMemberMetaData mmd, RDBMSStoreManager storeMgr) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionAccessor for the element type stored in this Collection/Set/List.voidinitialize(org.datanucleus.ClassLoaderResolver clr) Method to initialise the table definition.booleanAccessor for whether the element is embedded into this table.booleanAccessor for whether the element is a persistable(embedded).booleanAccessor for whether the element is serialised into this table.booleanAccessor for whether the element is a persistable(serialised)protected booleanConvenience method for whether a PK is required for the join table.Methods inherited from class ElementContainerTable
applyUserPrimaryKeySpecification, getElementMapping, getExpectedCandidateKeys, getExpectedForeignKeys, getExpectedIndices, getForeignKeyToElement, getForeignKeyToOwner, getMemberMapping, getOrderMapping, getRelationDiscriminatorMapping, getRelationDiscriminatorValueMethods inherited from class JoinTable
getIdMapping, getOwnerMapping, getOwnerMemberMetaData, getOwnerTable, getPrimaryKeyMethods inherited from class TableImpl
createConstraints, dropConstraints, 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
-
Constructor Details
-
CollectionTable
public CollectionTable(Table ownerTable, DatastoreIdentifier tableName, org.datanucleus.metadata.AbstractMemberMetaData mmd, RDBMSStoreManager storeMgr) Constructor.- Parameters:
ownerTable- Table of the owner of this membertableName- Identifier name of the tablemmd- MetaData for the member of the ownerstoreMgr- The Store Manager managing these tables.
-
-
Method Details
-
initialize
public void initialize(org.datanucleus.ClassLoaderResolver clr) Method to initialise the table definition.- Specified by:
initializein interfaceTable- Overrides:
initializein classElementContainerTable- Parameters:
clr- The ClassLoaderResolver
-
getElementType
Accessor for the element type stored in this Collection/Set/List.- Specified by:
getElementTypein classElementContainerTable- Returns:
- Name of element type.
-
isSerialisedElement
public boolean isSerialisedElement()Accessor for whether the element is serialised into this table. This can be a serialised persistable, or a serialised simple type- Returns:
- Whether the element is serialised.
-
isEmbeddedElement
public boolean isEmbeddedElement()Accessor for whether the element is embedded into this table. This can be an embedded persistable, or an embedded simple type- Returns:
- Whether the element is embedded.
-
isSerialisedElementPC
public boolean isSerialisedElementPC()Accessor for whether the element is a persistable(serialised)- Returns:
- Whether the element is PC and is serialised
-
isEmbeddedElementPC
public boolean isEmbeddedElementPC()Accessor for whether the element is a persistable(embedded). Currently this only defines a PC element as embedded if the MetaData has an <embedded> block. This may or may not be correct depending on how you interpret the JDO2 spec "embedded-element" flag.- Returns:
- Whether the element is PC and is embedded
-
requiresPrimaryKey
protected boolean requiresPrimaryKey()Convenience method for whether a PK is required for the join table. Extends JoinTable allowing for "ordered List" case which do not require a primary key (so we can have duplicates).- Overrides:
requiresPrimaryKeyin classJoinTable- Returns:
- Whether a PK is required
-