Package org.apache.openjpa.jdbc.meta
Class FieldMapping
java.lang.Object
org.apache.openjpa.meta.Extensions
org.apache.openjpa.meta.FieldMetaData
org.apache.openjpa.jdbc.meta.FieldMapping
- All Implemented Interfaces:
Serializable,FieldStrategy,Strategy,ValueMapping,Commentable,MetaDataContext,MetaDataModes,ValueMetaData
Specialization of metadata for relational databases.
- Author:
- Abe White
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.openjpa.meta.FieldMetaData
FieldMetaData.MemberProvider -
Field Summary
Fields inherited from class org.apache.openjpa.meta.FieldMetaData
MANAGE_NONE, MANAGE_PERSISTENT, MANAGE_TRANSACTIONAL, MANY_TO_MANY, MANY_TO_ONE, NULL_DEFAULT, NULL_EXCEPTION, NULL_NONE, NULL_UNSET, ONE_TO_MANY, ONE_TO_ONEFields inherited from class org.apache.openjpa.meta.Extensions
OPENJPAFields inherited from interface org.apache.openjpa.lib.xml.Commentable
EMPTY_COMMENTSFields inherited from interface org.apache.openjpa.meta.MetaDataModes
MODE_ALL, MODE_ANN_MAPPING, MODE_MAPPING, MODE_MAPPING_INIT, MODE_META, MODE_NONE, MODE_QUERYFields inherited from interface org.apache.openjpa.jdbc.meta.ValueMapping
JOIN_EXPECTED_INVERSE, JOIN_FORWARD, JOIN_INVERSE, POLY_FALSE, POLY_JOINABLE, POLY_TRUEFields inherited from interface org.apache.openjpa.meta.ValueMetaData
CASCADE_AUTO, CASCADE_IMMEDIATE, CASCADE_NONE, MAPPED_BY_PK -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidappendIndex(SQLBuffer sql, Select sel, Joins joins) Append the ordered column alias to the given statement.voidappendIsEmpty(SQLBuffer sql, Select sel, Joins joins) Append a where clause to the given statement checking if this value is empty.voidappendIsNotEmpty(SQLBuffer sql, Select sel, Joins joins) Append a where clause to the given statement checking if this value is not empty.voidappendIsNotNull(SQLBuffer sql, Select sel, Joins joins) Append a where clause to the given statement checking if this value is not null.voidappendIsNull(SQLBuffer sql, Select sel, Joins joins) Append a where clause to the given statement checking if this value is null.voidappendSize(SQLBuffer sql, Select sel, Joins joins) Append a where clause to the given statement checking the size of the value.voidappendType(SQLBuffer sql, Select sel, Joins joins) Append the entity discriminator value to the given statement.voidClear mapping information, including strategy.voidcopy(FieldMetaData fmd) Copy state from the given field to this one.voidCopy mapping info from the given instance to this one.voidCopy mapping info from the given instance to this one.voidcustomDelete(OpenJPAStateManager sm, JDBCStore store) Override this method to customize flushing this mapping.voidcustomInsert(OpenJPAStateManager sm, JDBCStore store) Override this method to customize flushing this mapping.voidcustomUpdate(OpenJPAStateManager sm, JDBCStore store) Override this method to customize flushing this mapping.voiddelete(OpenJPAStateManager sm, JDBCStore store, RowManager rm) Set the where values appropriately to delete the proper instance, and set all relations on non-secondary tables as updates.voiddeleteRow(OpenJPAStateManager sm, JDBCStore store, RowManager rm) Delete the row for this object if the reference foreign key exists.getAlias()Return the alias of this strategy.I/O information on the foreign key, or columns if this value doesn't have a key.Column[]The columns that hold the data for this value.Convenience method to perform cast fromValueMetaData.getDeclaredTypeMetaData().Convenience method to perform cast fromFieldMetaData.getDeclaringMetaData()Convenience method to perform cast fromFieldMetaData.getDefiningMetaData()intThe eager fetch mode, as one of the eager constants inJDBCFetchConfiguration.Convenience method to perform cast fromFieldMetaData.getElement()Convenience method to perform cast fromValueMetaData.getEmbeddedMetaData().Convenience method to perform cast fromValueMetaData.getFieldMetaData().If this value joins to another record, the foreign key.getForeignKey(ClassMapping target) Return an equivalent of this value's foreign key, but joining to the given target, which may be an unjoined subclass of this value's related type.The handler used for this value, or null if none.Return all independently-mapped joinable types for this value, depending on whether this value is polymorphic and how the related type is mapped.Convenience method to perform cast fromFieldMetaData.getInverseMetaDatas()I/O information on the join columns.intThe join direction.Foreign key linking the field table to the class' primary table.Index on join foreign key columns.Unique[]Unique constraint on join foreign key columns.Convenience method to perform cast fromFieldMetaData.getKey()Convenience method to perform cast fromFieldMetaData.getMappedByMetaData()Raw mapping data about field's join to parent table, as well as miscellaneous specialized columns like order column.Convenience method to perform cast fromFieldMetaData.getRepository()Field order column, if any.I/O information for order column.intThe degree to which this relation is polymorphic.getRow(OpenJPAStateManager sm, JDBCStore store, RowManager rm, int action) Return the row to use for this field.intReturn theorg.apache.openjpa.sql.Selectsubclasses constant for loading this relation, based on how the related type is mapped, whether this relation is polymorphic, and whether it is configured to use class criteria.The strategy used to map this mapping.getTable()The mapping's primary table.Convenience method to perform cast fromValueMetaData.getTypeMetaData().booleanWhether to use class criteria when joining to related type.Index on this value's columns, or null if none.Raw mapping data.Convenience method to perform cast fromValueMetaData.getValueMappedByMetaData().Convenience method to perform cast fromFieldMetaData.getValue()Unique constraint on this value's columns, or null if none.booleanvoidPerform caching and other initialization operations.voidinsert(OpenJPAStateManager sm, JDBCStore store, RowManager rm) Set values for the mapping into the proper rows.booleanbooleanAffirms if this field is the non-owning side of a bidirectional relation with a join table.booleanAffirms if this field is the owning side of a bidirectional relation with a join table.booleanisCustomDelete(OpenJPAStateManager sm, JDBCStore store) ReturnBoolean.FALSEif this mapping does not customize the delete process,Boolean.TRUEif it does, or null if it does customize the delete, but also relies on the standard delete method being called.isCustomInsert(OpenJPAStateManager sm, JDBCStore store) ReturnBoolean.FALSEif this mapping does not customize the insert process,Boolean.TRUEif it does, or null if it does customize the insert, but also relies on the standard insert method being called.isCustomUpdate(OpenJPAStateManager sm, JDBCStore store) ReturnBoolean.FALSEif this mapping does not customize the update process,Boolean.TRUEif it does, or null if it does customize the update, but also relies on the standard update method being called.booleanbooleanWhether the eager joins or selects used by this field are to-many.booleanWhether to use an outer join from the class' primary table.booleanisMapped()Returns true if field class does not use the "none" strategy (including if it has a null strategy, and therefore is probably in the process of being mapped).booleanbooleanbooleanbooleanbooleanReturn true if this field can be used as part of a state image for optimistic locking.Join this value to the class table.Joins from the owning class' table to the table where this field lies using the join foreign key.Return any joins needed to get from the primary table to this table.Join the key value to the class table.joinKeyRelation(Joins joins, boolean forceOuter, boolean traverse) Join this value's table to the table for the related first class object key type, if any.joinRelation(Joins joins, boolean forceOuter, boolean traverse) Join this value's table to the table for the related first class object type, if any.voidload(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch) Load secondary data using a connection from the store manager.voidload(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, Result res) Load virtual row data; the given result is not guaranteed to contain data for this field, so the field mapping should make sure the result contains its needed column data before loading.voidloadEagerJoin(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, Result res) Load the joined eager result.loadEagerParallel(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, Object res) Load the batched eager result.loadKeyProjection(JDBCStore store, JDBCFetchConfiguration fetch, Result res, Joins joins) Load this field's key value using the given result.loadProjection(JDBCStore store, JDBCFetchConfiguration fetch, Result res, Joins joins) Load this field value using the given result.voidmap(boolean adapt) Map the owning mapping using this strategy.voidmapConstraints(String name, boolean adapt) Deprecated.voidmapConstraints(DBIdentifier name, boolean adapt) Map indexes and constraints for this value, using the currentValueMappingInfo.voidmapJoin(boolean adapt, boolean joinRequired) Map this field to its table, optionally requiring that it be in another table.voidmapPrimaryKey(boolean adapt) Maps the primary key on the secondary table for this field, if the user's defaults create one.voidorderLocal(Select sel, ClassMapping elem, Joins joins) Add ordering to the given select for all non-relation order values, including the synthetic order column, if any.voidorderRelation(Select sel, ClassMapping elem, Joins joins) Add ordering to the given select for all relation-based values.voidIncrement the reference count of used schema components.booleanresolve(int mode) Resolve and validate metadata.intselect(Select sel, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, int eagerMode) Select the virtual row columns of this mapping.voidselectEagerJoin(Select sel, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, int eagerMode) Fill in joined select to related objects.voidselectEagerParallel(SelectExecutor sel, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, int eagerMode) Fill in parallel eager select for related objects.voidvoidsetColumnIO(ColumnIO io) I/O information on the foreign key, or columns if this value doesn't have a key.voidsetColumns(Column[] cols) The columns that hold the data for this value.voidsetEagerFetchMode(int mode) The eager fetch mode, as one of the eager constants inJDBCFetchConfiguration.voidsetFieldMapping(FieldMapping owner) Set the class mapping using this strategy.voidIf this value joins to another record, the foreign key.voidsetForeignKey(Row row, OpenJPAStateManager sm) Sets this value's foreign key to the given related object.voidsetForeignKey(Row row, OpenJPAStateManager sm, int targetNumber) Sets this value's foreign key to the given related object.voidsetHandler(ValueHandler handler) The handler used for this value, or null if none.voidI/O information on the join columns.voidsetJoinDirection(int direction) The join direction.voidForeign key linking the field table to the class' primary table.voidsetJoinIndex(Index idx) Index on join foreign key columns.voidsetJoinOuter(boolean outer) Whether to use an outer join from the class' primary table.voidsetJoinTableUniques(Unique[] unqs) voidsetJoinUnique(Unique unq) Unique constraint on join foreign key columns.voidsetMappedByIdValue(Object target, Object val, String mappedByIdFieldName) voidsetMapsIdCols(boolean hasMapsIdCols) voidsetOrderColumn(Column order) Field order column, if any.voidI/O information for order column.voidsetPolymorphic(int poly) The degree to which this relation is polymorphic.voidsetStrategy(FieldStrategy strategy, Boolean adapt) The strategy used to map this mapping.voidsetUseClassCriteria(boolean criteria) Whether to use class criteria when joining to related type.voidsetValueIndex(Index idx) Index on this value's columns, or null if none.voidsetValueUnique(Unique unq) Unique constraint on this value's columns, or null if none.intsupportsSelect(Select sel, int type, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch) Return whether this mapping can perform the given select type.voidUpdateMappingInfowith our current mapping information.toDataStoreValue(Object val, JDBCStore store) Translate the given external field value to its datastore equivalent.toKeyDataStoreValue(Object val, JDBCStore store) Translate the given key value to its datastore equivalent.voidupdate(OpenJPAStateManager sm, JDBCStore store, RowManager rm) Set values for the mapping into the proper rows.protected booleanReturn true if extensions starting with the given official datastore prefix should be validated for this runtime.voidwhere(OpenJPAStateManager sm, JDBCStore store, RowManager rm, Object prevValue) Add a WHERE condition to the row for this field such that the field's current DB value must equal the given previous value.voidwhereForeignKey(Row row, OpenJPAStateManager sm) Sets this value's foreign key to the given related object.voidwherePrimaryKey(Select sel, OpenJPAStateManager sm, JDBCStore store) Add awherePrimaryKeyorwhereForeignKeycondition to the given select, depending on whether we have a join foreign key.Methods inherited from class org.apache.openjpa.meta.FieldMetaData
addEmbeddedMetaData, addEmbeddedMetaData, addExtensionKeys, backingMember, compareTo, copy, equals, getAccessType, getAssociationType, getBackingMember, getCascadeAttach, getCascadeDelete, getCascadeDetach, getCascadePersist, getCascadeRefresh, getComments, getConverter, getCustomFetchGroups, getDeclaredIndex, getDeclaredType, getDeclaredTypeCode, getDeclaredTypeMetaData, getDeclaringMetaData, getDeclaringType, getDefiningMetaData, getElement, getEmbeddedMetaData, getExternalizer, getExternalizerMethod, getExternalValue, getExternalValueMap, getExternalValues, getFactory, getFactoryMethod, getFieldMetaData, getFieldValue, getFieldValueMap, getFullName, getFullName, getIndex, getInitializer, getInverse, getInverseMetaDatas, getKey, getListingIndex, getLoadFetchGroup, getManagement, getMappedBy, getMappedByField, getMappedByIdValue, getMappedByMetaData, getName, getNullValue, getObjectIdFieldType, getObjectIdFieldTypeCode, getOrderDeclaration, getOrders, getPrimaryKeyIndex, getProxyType, getRealName, getRelationType, getRepository, getResolve, getSetterName, getType, getTypeCode, getTypeMetaData, getTypeOverride, getUpdateStrategy, getUseSchemaElement, getValue, getValueMappedBy, getValueMappedByMetaData, getValueSequenceMetaData, getValueSequenceName, getValueStrategy, hashCode, isDeclaredTypePC, isDefaultFetchGroupExplicit, isElementCollection, isEmbedded, isEmbeddedPC, isExplicit, isExternalized, isInDefaultFetchGroup, isInFetchGroup, isLRS, isMappedById, isPersistentCollection, isPrimaryKey, isSerialized, isStream, isTransient, isTypePC, isUsedInOrderBy, isValueGenerated, isVersion, order, setAccessType, setAssociationType, setCascadeAttach, setCascadeDelete, setCascadeDetach, setCascadePersist, setCascadePersist, setCascadeRefresh, setComments, setConverter, setDeclaredIndex, setDeclaredType, setDeclaredTypeCode, setDeclaringType, setDefaultFetchGroupExplicit, setDelayCapable, setElementCollection, setEmbedded, setExplicit, setExternalizer, setExternalValues, setFactory, setInDefaultFetchGroup, setIndex, setInFetchGroup, setInitializer, setInverse, setListingIndex, setLoadFetchGroup, setLRS, setManagement, setMappedBy, setMappedByIdValue, setNullValue, setOrderDeclaration, setOrders, setPersistentCollection, setPrimaryKey, setPrimaryKeyIndex, setProxyType, setResolve, setResolve, setSerialized, setStream, setTransient, setType, setTypeCode, setTypeOverride, setUpdateStrategy, setUsedInOrderBy, setUseSchemaElement, setUsesImplData, setUsesIntermediate, setValueGenerated, setValueMappedBy, setValueSequenceName, setValueStrategy, setVersion, toString, usesImplData, usesIntermediateMethods inherited from class org.apache.openjpa.meta.Extensions
addExtension, addExtension, copy, getBooleanExtension, getBooleanExtension, getDoubleExtension, getDoubleExtension, getEmbeddedExtensions, getEmbeddedExtensions, getExtensionKeys, getExtensionKeys, getExtensionVendors, getIntExtension, getIntExtension, getObjectExtension, getObjectExtension, getStringExtension, getStringExtension, hasExtension, hasExtension, isEmpty, removeEmbeddedExtensions, removeEmbeddedExtensions, removeExtension, removeExtension, validateExtensionKeysMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.openjpa.meta.MetaDataContext
getRepositoryMethods inherited from interface org.apache.openjpa.meta.ValueMetaData
addEmbeddedMetaData, addEmbeddedMetaData, copy, getCascadeAttach, getCascadeDelete, getCascadeDetach, getCascadePersist, getCascadeRefresh, getDeclaredType, getDeclaredTypeCode, getDeclaredTypeMetaData, getEmbeddedMetaData, getFieldMetaData, getResolve, getType, getTypeCode, getTypeMetaData, getTypeOverride, getValueMappedBy, getValueMappedByMetaData, isDeclaredTypePC, isEmbedded, isEmbeddedPC, isSerialized, isTypePC, setCascadeAttach, setCascadeDelete, setCascadeDetach, setCascadePersist, setCascadePersist, setCascadeRefresh, setDeclaredType, setDeclaredTypeCode, setEmbedded, setResolve, setResolve, setSerialized, setType, setTypeCode, setTypeOverride, setValueMappedBy
-
Constructor Details
-
FieldMapping
Constructor.
-
-
Method Details
-
getMappingInfo
Raw mapping data about field's join to parent table, as well as miscellaneous specialized columns like order column. -
getStrategy
The strategy used to map this mapping. -
setStrategy
The strategy used to map this mapping. Theadaptparameter determines whether to adapt when mapping the strategy; use null if the strategy should not be mapped. -
getTable
The mapping's primary table. -
getJoinColumnIO
I/O information on the join columns. -
setJoinColumnIO
I/O information on the join columns. -
getJoinForeignKey
Foreign key linking the field table to the class' primary table. -
setJoinForeignKey
Foreign key linking the field table to the class' primary table. -
getJoinUnique
Unique constraint on join foreign key columns. -
setJoinUnique
Unique constraint on join foreign key columns. -
getJoinTableUniques
-
setJoinTableUniques
-
getJoinIndex
Index on join foreign key columns. -
setJoinIndex
Index on join foreign key columns. -
isJoinOuter
public boolean isJoinOuter()Whether to use an outer join from the class' primary table. -
setJoinOuter
public void setJoinOuter(boolean outer) Whether to use an outer join from the class' primary table. -
getOrderColumn
Field order column, if any. -
setOrderColumn
Field order column, if any. -
getOrderColumnIO
I/O information for order column. -
setOrderColumnIO
I/O information for order column. -
refSchemaComponents
public void refSchemaComponents()Increment the reference count of used schema components.- Specified by:
refSchemaComponentsin interfaceValueMapping
-
clearMapping
public void clearMapping()Clear mapping information, including strategy.- Specified by:
clearMappingin interfaceValueMapping
-
syncMappingInfo
public void syncMappingInfo()UpdateMappingInfowith our current mapping information.- Specified by:
syncMappingInfoin interfaceValueMapping
-
isMapped
public boolean isMapped()Returns true if field class does not use the "none" strategy (including if it has a null strategy, and therefore is probably in the process of being mapped).- Overrides:
isMappedin classFieldMetaData
-
getEagerFetchMode
public int getEagerFetchMode()The eager fetch mode, as one of the eager constants inJDBCFetchConfiguration. -
setEagerFetchMode
public void setEagerFetchMode(int mode) The eager fetch mode, as one of the eager constants inJDBCFetchConfiguration. -
getMappingRepository
Convenience method to perform cast fromFieldMetaData.getRepository()- Specified by:
getMappingRepositoryin interfaceValueMapping
-
getDefiningMapping
Convenience method to perform cast fromFieldMetaData.getDefiningMetaData() -
getDeclaringMapping
Convenience method to perform cast fromFieldMetaData.getDeclaringMetaData() -
getKeyMapping
Convenience method to perform cast fromFieldMetaData.getKey() -
getElementMapping
Convenience method to perform cast fromFieldMetaData.getElement() -
getValueMapping
Convenience method to perform cast fromFieldMetaData.getValue() -
getMappedByMapping
Convenience method to perform cast fromFieldMetaData.getMappedByMetaData() -
getInverseMappings
Convenience method to perform cast fromFieldMetaData.getInverseMetaDatas() -
resolve
public boolean resolve(int mode) Description copied from class:FieldMetaDataResolve and validate metadata. Return true if already resolved.- Specified by:
resolvein interfaceValueMetaData- Overrides:
resolvein classFieldMetaData
-
copyMappingInfo
Copy mapping info from the given instance to this one. -
copy
Description copied from class:FieldMetaDataCopy state from the given field to this one. Do not copy mapping information.- Overrides:
copyin classFieldMetaData
-
validateDataStoreExtensionPrefix
Description copied from class:ExtensionsReturn true if extensions starting with the given official datastore prefix should be validated for this runtime.- Overrides:
validateDataStoreExtensionPrefixin classExtensions
-
getAlias
Description copied from interface:StrategyReturn the alias of this strategy. For custom strategies, return the full class name. -
map
public void map(boolean adapt) Description copied from interface:StrategyMap the owning mapping using this strategy. -
mapJoin
public void mapJoin(boolean adapt, boolean joinRequired) Map this field to its table, optionally requiring that it be in another table. Utility method for use by mapping strategies. -
mapPrimaryKey
public void mapPrimaryKey(boolean adapt) Maps the primary key on the secondary table for this field, if the user's defaults create one. This must be called after this field is mapped so that it's table has its columns set. -
initialize
public void initialize()Description copied from interface:StrategyPerform caching and other initialization operations. This method is called afterStrategy.map(boolean), and after all related components have been mapped as well.- Specified by:
initializein interfaceStrategy
-
insert
Description copied from interface:StrategySet values for the mapping into the proper rows. For class mappings, this method will be called only after the corresponding method has been called for all fields of this mapping.- Specified by:
insertin interfaceStrategy- Throws:
SQLException
-
setMappedByIdValue
-
update
Description copied from interface:StrategySet values for the mapping into the proper rows.- Specified by:
updatein interfaceStrategy- Throws:
SQLException- See Also:
-
delete
Description copied from interface:StrategySet the where values appropriately to delete the proper instance, and set all relations on non-secondary tables as updates. This allows foreign key analysis.- Specified by:
deletein interfaceStrategy- Throws:
SQLException- See Also:
-
deleteRow
Delete the row for this object if the reference foreign key exists. Utility method for use by mapping strategies.- Throws:
SQLException
-
getRow
public Row getRow(OpenJPAStateManager sm, JDBCStore store, RowManager rm, int action) throws SQLException Return the row to use for this field. This method is meant only for single-value fields that might reside in a table that is joined to the primary table through the join foreign key. It is not meant for multi-valued fields like collections and maps. The method checks whether we're using an outer join and if so it deletes the field's previous value, then if the field is non-null returns an insert row for the new value. The join foreign key will already be set on the returned row; mapping strategies just need to set their own values. Utility method for use by mapping strategies.- Throws:
SQLException
-
isCustomInsert
Description copied from interface:StrategyReturnBoolean.FALSEif this mapping does not customize the insert process,Boolean.TRUEif it does, or null if it does customize the insert, but also relies on the standard insert method being called. Implement theStrategy.customInsert(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.jdbc.kernel.JDBCStore)method to implement the custom insertion behavior.- Specified by:
isCustomInsertin interfaceStrategy
-
isCustomUpdate
Description copied from interface:StrategyReturnBoolean.FALSEif this mapping does not customize the update process,Boolean.TRUEif it does, or null if it does customize the update, but also relies on the standard update method being called. Implement theStrategy.customUpdate(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.jdbc.kernel.JDBCStore)method to override the default update behavior.- Specified by:
isCustomUpdatein interfaceStrategy
-
isCustomDelete
Description copied from interface:StrategyReturnBoolean.FALSEif this mapping does not customize the delete process,Boolean.TRUEif it does, or null if it does customize the delete, but also relies on the standard delete method being called. Implement theStrategy.customDelete(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.jdbc.kernel.JDBCStore)method to override the default deletion behavior.- Specified by:
isCustomDeletein interfaceStrategy
-
customInsert
Description copied from interface:StrategyOverride this method to customize flushing this mapping. For classes, this method must also flush all fields. For fields, this method is called after the owning object is inserted, so if this field is in a row with other fields, that row will already exist.- Specified by:
customInsertin interfaceStrategy- Throws:
SQLException
-
customUpdate
Description copied from interface:StrategyOverride this method to customize flushing this mapping. For classes, this method must also flush all fields.- Specified by:
customUpdatein interfaceStrategy- Throws:
SQLException
-
customDelete
Description copied from interface:StrategyOverride this method to customize flushing this mapping. For classes, this method must also flush all fields. For fields, this method will be called after the owning object is deleted.- Specified by:
customDeletein interfaceStrategy- Throws:
SQLException
-
setFieldMapping
Description copied from interface:FieldStrategySet the class mapping using this strategy. This will be called before use.- Specified by:
setFieldMappingin interfaceFieldStrategy
-
supportsSelect
public int supportsSelect(Select sel, int type, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch) Description copied from interface:FieldStrategyReturn whether this mapping can perform the given select type. Return 0 if the given type is not supported. If the given type is an eager parallel type, return the number of UNIONed selects necessary to fetch the data. Otherwise, return any positive number if the type is supported. The given state manager may be null if selecting multiple instances.- Specified by:
supportsSelectin interfaceFieldStrategy- See Also:
-
selectEagerParallel
public void selectEagerParallel(SelectExecutor sel, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, int eagerMode) Description copied from interface:FieldStrategyFill in parallel eager select for related objects. -
selectEagerJoin
public void selectEagerJoin(Select sel, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, int eagerMode) Description copied from interface:FieldStrategyFill in joined select to related objects. -
isEagerSelectToMany
public boolean isEagerSelectToMany()Description copied from interface:FieldStrategyWhether the eager joins or selects used by this field are to-many.- Specified by:
isEagerSelectToManyin interfaceFieldStrategy
-
select
public int select(Select sel, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, int eagerMode) Description copied from interface:FieldStrategySelect the virtual row columns of this mapping.- Specified by:
selectin interfaceFieldStrategy- Parameters:
sel- the select to add tosm- the instance being loaded, or null if not initialized yet or selecting for multiple instancesstore- the current store managerfetch- fetch configurationeagerMode- the eager fetch mode to use; this may be more restrictive than the mode of the fetch configuration- Returns:
- > 0 if this mapping requires the selected data (if any), 0 if it selected data but does not require it, or < 0 if no data was selected
-
join
Return any joins needed to get from the primary table to this table. -
wherePrimaryKey
Add awherePrimaryKeyorwhereForeignKeycondition to the given select, depending on whether we have a join foreign key. -
orderLocal
Add ordering to the given select for all non-relation order values, including the synthetic order column, if any.- Parameters:
elem- the related type we're fetching, or nulljoins- the joins to this field's table
-
orderRelation
Add ordering to the given select for all relation-based values.- Parameters:
elem- the related type we're fetchingjoins- the joins across the relation
-
loadEagerParallel
public Object loadEagerParallel(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, Object res) throws SQLException Description copied from interface:FieldStrategyLoad the batched eager result.- Specified by:
loadEagerParallelin interfaceFieldStrategyres- originally theResultto load from, but this method may return a processed result form that will be passed to subsequent calls- Throws:
SQLException
-
loadEagerJoin
public void loadEagerJoin(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, Result res) throws SQLException Description copied from interface:FieldStrategyLoad the joined eager result.- Specified by:
loadEagerJoinin interfaceFieldStrategy- Throws:
SQLException
-
load
public void load(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch, Result res) throws SQLException Description copied from interface:FieldStrategyLoad virtual row data; the given result is not guaranteed to contain data for this field, so the field mapping should make sure the result contains its needed column data before loading.- Specified by:
loadin interfaceFieldStrategy- Throws:
SQLException
-
load
public void load(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch) throws SQLException Description copied from interface:FieldStrategyLoad secondary data using a connection from the store manager.- Specified by:
loadin interfaceFieldStrategy- Throws:
SQLException
-
toDataStoreValue
Description copied from interface:FieldStrategyTranslate the given external field value to its datastore equivalent. If the mapping occupies multiple columns in the datastore, return an object array, else return a single object. Simply returns the given object by default.- Specified by:
toDataStoreValuein interfaceFieldStrategy
-
toKeyDataStoreValue
Description copied from interface:FieldStrategyTranslate the given key value to its datastore equivalent. If the mapping occupies multiple columns in the datastore, return an object array, else return a single object. Simply returns the given object by default.- Specified by:
toKeyDataStoreValuein interfaceFieldStrategy
-
appendIsEmpty
Description copied from interface:FieldStrategyAppend a where clause to the given statement checking if this value is empty. Appends impossible-to-satisfy SQL by default.- Specified by:
appendIsEmptyin interfaceFieldStrategy
-
appendIsNotEmpty
Description copied from interface:FieldStrategyAppend a where clause to the given statement checking if this value is not empty. Appends always-satisfied SQL by default.- Specified by:
appendIsNotEmptyin interfaceFieldStrategy
-
appendIsNull
Description copied from interface:FieldStrategyAppend a where clause to the given statement checking if this value is null.- Specified by:
appendIsNullin interfaceFieldStrategy
-
appendIsNotNull
Description copied from interface:FieldStrategyAppend a where clause to the given statement checking if this value is not null.- Specified by:
appendIsNotNullin interfaceFieldStrategy
-
appendSize
Description copied from interface:FieldStrategyAppend a where clause to the given statement checking the size of the value.- Specified by:
appendSizein interfaceFieldStrategy
-
appendIndex
Description copied from interface:FieldStrategyAppend the ordered column alias to the given statement.- Specified by:
appendIndexin interfaceFieldStrategy
-
appendType
Description copied from interface:FieldStrategyAppend the entity discriminator value to the given statement.- Specified by:
appendTypein interfaceFieldStrategy
-
join
Description copied from interface:FieldStrategyJoin this value to the class table. Does nothing by default.- Specified by:
joinin interfaceFieldStrategy
-
joinKey
Description copied from interface:FieldStrategyJoin the key value to the class table. Does nothing by default.- Specified by:
joinKeyin interfaceFieldStrategy
-
joinRelation
Description copied from interface:FieldStrategyJoin this value's table to the table for the related first class object type, if any. Does nothing by default.- Specified by:
joinRelationin interfaceFieldStrategytraverse- if true, throw proper exception if it is not possible for this mapping to traverse into the related type
-
joinKeyRelation
Description copied from interface:FieldStrategyJoin this value's table to the table for the related first class object key type, if any. Does nothing by default.- Specified by:
joinKeyRelationin interfaceFieldStrategytraverse- if true, throw proper exception if it is not possible for this mapping to traverse into the related type
-
join
Joins from the owning class' table to the table where this field lies using the join foreign key. Utility method for use by mapping strategies. -
loadProjection
public Object loadProjection(JDBCStore store, JDBCFetchConfiguration fetch, Result res, Joins joins) throws SQLException Description copied from interface:FieldStrategyLoad this field value using the given result. The result will contain the columns fromValueMapping.getColumns().- Specified by:
loadProjectionin interfaceFieldStrategy- Throws:
SQLException
-
loadKeyProjection
public Object loadKeyProjection(JDBCStore store, JDBCFetchConfiguration fetch, Result res, Joins joins) throws SQLException Description copied from interface:FieldStrategyLoad this field's key value using the given result. The result will contain the columns fromValueMapping.getColumns().- Specified by:
loadKeyProjectionin interfaceFieldStrategy- Throws:
SQLException
-
isVersionable
public boolean isVersionable()Description copied from interface:FieldStrategyReturn true if this field can be used as part of a state image for optimistic locking.- Specified by:
isVersionablein interfaceFieldStrategy
-
where
public void where(OpenJPAStateManager sm, JDBCStore store, RowManager rm, Object prevValue) throws SQLException Description copied from interface:FieldStrategyAdd a WHERE condition to the row for this field such that the field's current DB value must equal the given previous value. Only versionable mappings must implement this method meaningfully.- Specified by:
wherein interfaceFieldStrategy- Throws:
SQLException
-
getValueInfo
Description copied from interface:ValueMappingRaw mapping data.- Specified by:
getValueInfoin interfaceValueMapping
-
getHandler
Description copied from interface:ValueMappingThe handler used for this value, or null if none.- Specified by:
getHandlerin interfaceValueMapping
-
setHandler
Description copied from interface:ValueMappingThe handler used for this value, or null if none.- Specified by:
setHandlerin interfaceValueMapping
-
getFieldMapping
Description copied from interface:ValueMappingConvenience method to perform cast fromValueMetaData.getFieldMetaData().- Specified by:
getFieldMappingin interfaceValueMapping
-
getTypeMapping
Description copied from interface:ValueMappingConvenience method to perform cast fromValueMetaData.getTypeMetaData().- Specified by:
getTypeMappingin interfaceValueMapping
-
getDeclaredTypeMapping
Description copied from interface:ValueMappingConvenience method to perform cast fromValueMetaData.getDeclaredTypeMetaData().- Specified by:
getDeclaredTypeMappingin interfaceValueMapping
-
getEmbeddedMapping
Description copied from interface:ValueMappingConvenience method to perform cast fromValueMetaData.getEmbeddedMetaData().- Specified by:
getEmbeddedMappingin interfaceValueMapping
-
getValueMappedByMapping
Description copied from interface:ValueMappingConvenience method to perform cast fromValueMetaData.getValueMappedByMetaData().- Specified by:
getValueMappedByMappingin interfaceValueMapping
-
getColumns
Description copied from interface:ValueMappingThe columns that hold the data for this value.- Specified by:
getColumnsin interfaceValueMapping
-
setColumns
Description copied from interface:ValueMappingThe columns that hold the data for this value.- Specified by:
setColumnsin interfaceValueMapping
-
getColumnIO
Description copied from interface:ValueMappingI/O information on the foreign key, or columns if this value doesn't have a key.- Specified by:
getColumnIOin interfaceValueMapping
-
setColumnIO
Description copied from interface:ValueMappingI/O information on the foreign key, or columns if this value doesn't have a key.- Specified by:
setColumnIOin interfaceValueMapping
-
getForeignKey
Description copied from interface:ValueMappingIf this value joins to another record, the foreign key.- Specified by:
getForeignKeyin interfaceValueMapping
-
getForeignKey
Description copied from interface:ValueMappingReturn an equivalent of this value's foreign key, but joining to the given target, which may be an unjoined subclass of this value's related type.- Specified by:
getForeignKeyin interfaceValueMapping
-
setForeignKey
Description copied from interface:ValueMappingIf this value joins to another record, the foreign key.- Specified by:
setForeignKeyin interfaceValueMapping
-
getJoinDirection
public int getJoinDirection()Description copied from interface:ValueMappingThe join direction.- Specified by:
getJoinDirectionin interfaceValueMapping
-
setJoinDirection
public void setJoinDirection(int direction) Description copied from interface:ValueMappingThe join direction.- Specified by:
setJoinDirectionin interfaceValueMapping
-
setForeignKey
Description copied from interface:ValueMappingSets this value's foreign key to the given related object. The object may be null.- Specified by:
setForeignKeyin interfaceValueMapping- Throws:
SQLException
-
setForeignKey
Description copied from interface:ValueMappingSets this value's foreign key to the given related object. The object may be null. If the object is one of2or more foreign keys with the same target, the targetNumber specifies the one to set.- Specified by:
setForeignKeyin interfaceValueMapping- Throws:
SQLException
-
whereForeignKey
Description copied from interface:ValueMappingSets this value's foreign key to the given related object. The object may be null.- Specified by:
whereForeignKeyin interfaceValueMapping- Throws:
SQLException
-
getIndependentTypeMappings
Description copied from interface:ValueMappingReturn all independently-mapped joinable types for this value, depending on whether this value is polymorphic and how the related type is mapped. Return an empty array if value type is not PC.- Specified by:
getIndependentTypeMappingsin interfaceValueMapping
-
getSelectSubclasses
public int getSelectSubclasses()Description copied from interface:ValueMappingReturn theorg.apache.openjpa.sql.Selectsubclasses constant for loading this relation, based on how the related type is mapped, whether this relation is polymorphic, and whether it is configured to use class criteria.- Specified by:
getSelectSubclassesin interfaceValueMapping
-
getValueUnique
Description copied from interface:ValueMappingUnique constraint on this value's columns, or null if none.- Specified by:
getValueUniquein interfaceValueMapping
-
setValueUnique
Description copied from interface:ValueMappingUnique constraint on this value's columns, or null if none.- Specified by:
setValueUniquein interfaceValueMapping
-
getValueIndex
Description copied from interface:ValueMappingIndex on this value's columns, or null if none.- Specified by:
getValueIndexin interfaceValueMapping
-
setValueIndex
Description copied from interface:ValueMappingIndex on this value's columns, or null if none.- Specified by:
setValueIndexin interfaceValueMapping
-
getUseClassCriteria
public boolean getUseClassCriteria()Description copied from interface:ValueMappingWhether to use class criteria when joining to related type.- Specified by:
getUseClassCriteriain interfaceValueMapping
-
setUseClassCriteria
public void setUseClassCriteria(boolean criteria) Description copied from interface:ValueMappingWhether to use class criteria when joining to related type.- Specified by:
setUseClassCriteriain interfaceValueMapping
-
getPolymorphic
public int getPolymorphic()Description copied from interface:ValueMappingThe degree to which this relation is polymorphic.- Specified by:
getPolymorphicin interfaceValueMapping
-
setPolymorphic
public void setPolymorphic(int poly) Description copied from interface:ValueMappingThe degree to which this relation is polymorphic.- Specified by:
setPolymorphicin interfaceValueMapping
-
mapConstraints
Deprecated.Description copied from interface:ValueMappingMap indexes and constraints for this value, using the currentValueMappingInfo. The foreign key or columns of this value must be set before calling this method.- Specified by:
mapConstraintsin interfaceValueMapping
-
mapConstraints
Description copied from interface:ValueMappingMap indexes and constraints for this value, using the currentValueMappingInfo. The foreign key or columns of this value must be set before calling this method.- Specified by:
mapConstraintsin interfaceValueMapping
-
copyMappingInfo
Description copied from interface:ValueMappingCopy mapping info from the given instance to this one.- Specified by:
copyMappingInfoin interfaceValueMapping
-
isBidirectionalJoinTableMappingOwner
public boolean isBidirectionalJoinTableMappingOwner()Affirms if this field is the owning side of a bidirectional relation with a join table. Evaluated only once and the result cached for subsequent call. Hence must be called after resolution. -
isBidirectionalJoinTableMappingNonOwner
public boolean isBidirectionalJoinTableMappingNonOwner()Affirms if this field is the non-owning side of a bidirectional relation with a join table. Evaluated only once and the result cached for subsequent call. Hence must be called after resolution. -
isBiMTo1JT
public boolean isBiMTo1JT() -
isUni1ToMFK
public boolean isUni1ToMFK() -
isUniMTo1JT
public boolean isUniMTo1JT() -
isUni1To1JT
public boolean isUni1To1JT() -
isBi1To1JT
public boolean isBi1To1JT() -
getBi_1ToM_JTField
-
getBi_MTo1_JTField
-
getBi1ToMJoinFK
-
getBi1ToMElemFK
-
setBi1MJoinTableInfo
public void setBi1MJoinTableInfo() -
isNonDefaultMappingUsingJoinTableStrategy
public boolean isNonDefaultMappingUsingJoinTableStrategy() -
setMapsIdCols
public void setMapsIdCols(boolean hasMapsIdCols) -
hasMapsIdCols
public boolean hasMapsIdCols() -
isDelayCapable
public boolean isDelayCapable()- Overrides:
isDelayCapablein classFieldMetaData
-