Class AbstractContainerMapping
java.lang.Object
org.datanucleus.store.rdbms.mapping.java.JavaTypeMapping
org.datanucleus.store.rdbms.mapping.java.SingleFieldMapping
org.datanucleus.store.rdbms.mapping.java.AbstractContainerMapping
- Direct Known Subclasses:
ArrayMapping,CollectionMapping,MapMapping
Mapping for a field that represents a container of objects, such as a List, a Set, a Collection, a Map, or an array. Has an owner table.
Can be represented in the following ways :-
- Using a Join-Table, where the linkage between owner and elements/keys/values is stored in this table
- Using a Foreign-Key in the element/key/value
- Embedded into the Join-Table
- Serialised into a single-column in the Join-Table
- In a single column in the owner table, using serialisation
- In a single column in the owner table, using a converter
-
Field Summary
Fields inherited from class org.datanucleus.store.rdbms.mapping.java.SingleFieldMapping
EXTENSION_CHECK_CONSTRAINT_VALUESFields inherited from class org.datanucleus.store.rdbms.mapping.java.JavaTypeMapping
absFieldNumber, columnMappings, mmd, referenceMapping, roleForMember, storeMgr, table, type -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanConvenience method to return if the container (collection or map) is stored in the owning table as a column.getColumnMapping(int index) Accessor for a datastore mappingAccessor for the datastore mappings for this java typegetJavaTypeForColumnMapping(int index) Accessor for the name of the java-type actually used when mapping the particular column.intAccessor for the number of columnsMethod to retrieve an object from the passed JDBC ResultSet.getTable()Accessor for the datastore class.booleanWhether the mapping has a simple (single column) datastore representation.booleanThis mapping is included in the select statement.booleanThis mapping is included in the insert statement.booleanThis mapping is included in the update statement.voidinitialize(org.datanucleus.metadata.AbstractMemberMetaData mmd, Table table, org.datanucleus.ClassLoaderResolver clr) Initialize this JavaTypeMapping for the given field/property.voidpostFetch(org.datanucleus.state.DNStateManager sm) Method to be called after any fetch of the owner class element.protected voidMethod to prepare a column mapping for use in the datastore.protected org.datanucleus.store.types.SCOreplaceFieldWithWrapper(org.datanucleus.state.DNStateManager sm, Object value) Method to replace the field that this mapping represents with a SCO wrapper.voidsetObject(org.datanucleus.ExecutionContext ec, PreparedStatement ps, int[] exprIndex, Object value) Method to set a field in the passed JDBC PreparedStatement using this mapping.Methods inherited from class org.datanucleus.store.rdbms.mapping.java.SingleFieldMapping
getBoolean, getByte, getChar, getDefaultLength, getDouble, getFloat, getInt, getLong, getShort, getString, getValidValues, setBoolean, setByte, setChar, setDouble, setFloat, setInt, setLong, setShort, setStringMethods inherited from class org.datanucleus.store.rdbms.mapping.java.JavaTypeMapping
addColumnMapping, equals, failureMessage, getAbsoluteFieldNumber, getColumnMetaDataForMember, getJavaType, getMemberMetaData, getObject, getReferenceMapping, getRoleForMember, getStoreManager, getType, getValueForColumnMapping, hashCode, initialize, isNullable, isSerialised, performSetPostProcessing, representableAsStringLiteralInStatement, requiresSetPostProcessing, setAbsFieldNumber, setMemberMetaData, setObject, setReferenceMapping, setRoleForMember, setTable
-
Constructor Details
-
AbstractContainerMapping
public AbstractContainerMapping()
-
-
Method Details
-
initialize
public void initialize(org.datanucleus.metadata.AbstractMemberMetaData mmd, Table table, org.datanucleus.ClassLoaderResolver clr) Initialize this JavaTypeMapping for the given field/property.- Overrides:
initializein classSingleFieldMapping- Parameters:
mmd- MetaData for the field/property to be mapped (if any)table- The datastore container storing this mapping (if any)clr- the ClassLoaderResolver
-
hasSimpleDatastoreRepresentation
public boolean hasSimpleDatastoreRepresentation()Whether the mapping has a simple (single column) datastore representation.- Overrides:
hasSimpleDatastoreRepresentationin classJavaTypeMapping- Returns:
- Whether it has a simple datastore representation (single column)
-
prepareColumnMapping
protected void prepareColumnMapping()Method to prepare a column mapping for use in the datastore. This creates the column in the table.- Overrides:
prepareColumnMappingin classSingleFieldMapping
-
getJavaTypeForColumnMapping
Accessor for the name of the java-type actually used when mapping the particular column. This java-type must have an entry in the datastore mappings.- Overrides:
getJavaTypeForColumnMappingin classSingleFieldMapping- Parameters:
index- requested column index.- Returns:
- the name of java-type for the requested column.
-
setObject
public void setObject(org.datanucleus.ExecutionContext ec, PreparedStatement ps, int[] exprIndex, Object value) Method to set a field in the passed JDBC PreparedStatement using this mapping. Only valid when the collection is serialised.- Overrides:
setObjectin classSingleFieldMapping- Parameters:
ec- ExecutionContextps- The JDBC Prepared Statement to be populatedexprIndex- The parameter positions in the JDBC statement to populate.value- The value to populate into it
-
getObject
Method to retrieve an object from the passed JDBC ResultSet. Only valid when the collection is serialised.- Overrides:
getObjectin classSingleFieldMapping- Parameters:
ec- ExecutionContextresultSet- The ResultSetexprIndex- The parameter position(s) to extract the object from- Returns:
- The collection object
-
getTable
Accessor for the datastore class.- Overrides:
getTablein classJavaTypeMapping- Returns:
- The datastore class
-
getNumberOfColumnMappings
public int getNumberOfColumnMappings()Accessor for the number of columns- Overrides:
getNumberOfColumnMappingsin classJavaTypeMapping- Returns:
- The number of columns
-
getColumnMapping
Accessor for a datastore mapping- Overrides:
getColumnMappingin classJavaTypeMapping- Parameters:
index- The id of the mapping- Returns:
- The datastore mapping
-
getColumnMappings
Accessor for the datastore mappings for this java type- Overrides:
getColumnMappingsin classJavaTypeMapping- Returns:
- The datastore mapping(s)
-
containerIsStoredInSingleColumn
protected boolean containerIsStoredInSingleColumn()Convenience method to return if the container (collection or map) is stored in the owning table as a column. The container is stored in a single column in the following situations :-- The FieldMetaData has 'serialized="true"'
- The collection has embedded-element="true" but no join table (and so serialised)
- The map has embedded-key/value="true" but no join table (and so serialised)
- The array has embedded-element="true" but no join table (and so serialised)
- The array has no join table and non-PC elements (and so serialised)
- Returns:
- Whether it is stored in a single column in the main table.
-
includeInFetchStatement
public boolean includeInFetchStatement()This mapping is included in the select statement.- Overrides:
includeInFetchStatementin classJavaTypeMapping- Returns:
- Whether to include in select statement
-
includeInUpdateStatement
public boolean includeInUpdateStatement()This mapping is included in the update statement.- Overrides:
includeInUpdateStatementin classJavaTypeMapping- Returns:
- Whether to include in update statement
-
includeInInsertStatement
public boolean includeInInsertStatement()This mapping is included in the insert statement.- Overrides:
includeInInsertStatementin classJavaTypeMapping- Returns:
- Whether to include in insert statement
-
replaceFieldWithWrapper
protected org.datanucleus.store.types.SCO replaceFieldWithWrapper(org.datanucleus.state.DNStateManager sm, Object value) Method to replace the field that this mapping represents with a SCO wrapper. The wrapper will be suitable for the passed instantiated type and if it is null will be for the declared type of the field.- Parameters:
sm- StateManager for the owning objectvalue- The value to create the wrapper with- Returns:
- The SCO wrapper object that the field was replaced with
-
postFetch
public void postFetch(org.datanucleus.state.DNStateManager sm) Method to be called after any fetch of the owner class element.- Parameters:
sm- StateManager of the owner
-