Class MapTableFieldStrategy
java.lang.Object
org.apache.openjpa.jdbc.meta.strats.AbstractStrategy
org.apache.openjpa.jdbc.meta.strats.AbstractFieldStrategy
org.apache.openjpa.jdbc.meta.strats.ContainerFieldStrategy
org.apache.openjpa.jdbc.meta.strats.MapTableFieldStrategy
- All Implemented Interfaces:
Serializable
,FieldStrategy
,Strategy
,LRSMapFieldStrategy
- Direct Known Subclasses:
HandlerHandlerMapTableFieldStrategy
,HandlerRelationMapTableFieldStrategy
,RelationHandlerMapTableFieldStrategy
,RelationRelationMapTableFieldStrategy
public abstract class MapTableFieldStrategy
extends ContainerFieldStrategy
implements LRSMapFieldStrategy
Base class for map mappings. Handles managing the secondary table
used to hold map keys and values and loading. Subclasses must implement
abstract methods and insert/update behavior as well as overriding
FieldStrategy.toDataStoreValue(java.lang.Object, org.apache.openjpa.jdbc.kernel.JDBCStore)
,
FieldStrategy.toKeyDataStoreValue(java.lang.Object, org.apache.openjpa.jdbc.kernel.JDBCStore)
,
FieldStrategy.joinRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)
, and
FieldStrategy.joinKeyRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)
if necessary.- Author:
- Abe White
- See Also:
-
Field Summary
Fields inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractFieldStrategy
field
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
delete
(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.Some mapping derive keys from map values.deriveValue
(JDBCStore store, Object key) Some mapping derive values from map keys.The owning field mapping.protected ClassMapping[]
getIndependentElementMappings
(boolean traverse) Return all independent mappings to which this strategy must join in order to access collection elements, or empty array if none.getIndependentKeyMappings
(boolean traverse) Return all independent mappings to which this strategy must join in order to access map keys, or empty array if none.getIndependentValueMappings
(boolean traverse) Return all independent mappings to which this strategy must join in order to access map values, or empty array if none.Return the foreign key used to join to the owning field for the given mapping from eitherLRSMapFieldStrategy.getIndependentKeyMappings(boolean)
orLRSMapFieldStrategy.getIndependentValueMappings(boolean)
(or null).protected void
handleMappedByForeignKey
(boolean adapt) protected boolean
isTypeUnjoinedSubclass
(ValueMapping mapped) Join this value to the class table.Join the key value to the class table.joinKeyRelation
(Joins joins, ClassMapping key) joinValueRelation
(Joins joins, ClassMapping val) InvokesFieldStrategy.joinRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)
by default.void
load
(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch) Load secondary data using a connection from the store manager.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.void
map
(boolean adapt) Map the owning mapping using this strategy.protected boolean
populateKey
(Row row, OpenJPAStateManager valsm, Object obj, StoreContext ctx, RowManager rm, JDBCStore store) int
supportsSelect
(Select sel, int type, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch) Return whether this mapping can perform the given select type.Methods inherited from class org.apache.openjpa.jdbc.meta.strats.ContainerFieldStrategy
appendIndex, appendIsEmpty, appendIsNotEmpty, appendIsNotNull, appendIsNull, appendJoinCount, appendSize, appendUnaliasedJoin
Methods inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractFieldStrategy
appendType, assertNotMappedBy, isEagerSelectToMany, isVersionable, joinKeyRelation, joinRelation, load, loadEagerJoin, loadEagerParallel, select, selectEagerJoin, selectEagerParallel, setFieldMapping, toDataStoreValue, toKeyDataStoreValue, where
Methods inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractStrategy
customDelete, customInsert, customUpdate, getAlias, initialize, insert, isCustomDelete, isCustomInsert, isCustomUpdate, update
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.openjpa.jdbc.meta.FieldStrategy
appendIndex, appendIsEmpty, appendIsNotEmpty, appendIsNotNull, appendIsNull, appendSize, appendType, isEagerSelectToMany, isVersionable, joinKeyRelation, joinRelation, load, loadEagerJoin, loadEagerParallel, select, selectEagerJoin, selectEagerParallel, setFieldMapping, toDataStoreValue, toKeyDataStoreValue, where
Methods inherited from interface org.apache.openjpa.jdbc.meta.strats.LRSMapFieldStrategy
getKeyColumns, getResults, getValueColumns, loadKey, loadValue, selectKey, selectValue
Methods inherited from interface org.apache.openjpa.jdbc.meta.Strategy
customDelete, customInsert, customUpdate, getAlias, initialize, insert, isCustomDelete, isCustomInsert, isCustomUpdate, update
-
Constructor Details
-
MapTableFieldStrategy
public MapTableFieldStrategy()
-
-
Method Details
-
getFieldMapping
Description copied from interface:LRSMapFieldStrategy
The owning field mapping.- Specified by:
getFieldMapping
in interfaceLRSMapFieldStrategy
-
getIndependentKeyMappings
Description copied from interface:LRSMapFieldStrategy
Return all independent mappings to which this strategy must join in order to access map keys, or empty array if none.- Specified by:
getIndependentKeyMappings
in interfaceLRSMapFieldStrategy
- See Also:
-
getIndependentValueMappings
Description copied from interface:LRSMapFieldStrategy
Return all independent mappings to which this strategy must join in order to access map values, or empty array if none.- Specified by:
getIndependentValueMappings
in interfaceLRSMapFieldStrategy
- See Also:
-
getJoinForeignKey
Description copied from interface:LRSMapFieldStrategy
Return the foreign key used to join to the owning field for the given mapping from eitherLRSMapFieldStrategy.getIndependentKeyMappings(boolean)
orLRSMapFieldStrategy.getIndependentValueMappings(boolean)
(or null).- Specified by:
getJoinForeignKey
in interfaceLRSMapFieldStrategy
-
deriveKey
Description copied from interface:LRSMapFieldStrategy
Some mapping derive keys from map values. Other mappings may return null.- Specified by:
deriveKey
in interfaceLRSMapFieldStrategy
-
deriveValue
Description copied from interface:LRSMapFieldStrategy
Some mapping derive values from map keys. Other mappings may return null.- Specified by:
deriveValue
in interfaceLRSMapFieldStrategy
-
joinKeyRelation
InvokesFieldStrategy.joinKeyRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)
by default.- Specified by:
joinKeyRelation
in interfaceLRSMapFieldStrategy
-
joinValueRelation
InvokesFieldStrategy.joinRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)
by default.- Specified by:
joinValueRelation
in interfaceLRSMapFieldStrategy
-
map
public void map(boolean adapt) Description copied from interface:Strategy
Map the owning mapping using this strategy.- Specified by:
map
in interfaceStrategy
- Overrides:
map
in classAbstractStrategy
- Parameters:
adapt
- if true, use the owning mapping's raw mapping info to set its ORM data; if false, ORM data will already be set
-
delete
Description copied from interface:Strategy
Set 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:
delete
in interfaceStrategy
- Overrides:
delete
in classAbstractStrategy
- Throws:
SQLException
- See Also:
-
supportsSelect
public int supportsSelect(Select sel, int type, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch) Description copied from interface:FieldStrategy
Return 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:
supportsSelect
in interfaceFieldStrategy
- Overrides:
supportsSelect
in classAbstractFieldStrategy
- See Also:
-
load
public void load(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch) throws SQLException Description copied from interface:FieldStrategy
Load secondary data using a connection from the store manager.- Specified by:
load
in interfaceFieldStrategy
- Overrides:
load
in classAbstractFieldStrategy
- Throws:
SQLException
-
loadKeyProjection
public Object loadKeyProjection(JDBCStore store, JDBCFetchConfiguration fetch, Result res, Joins joins) throws SQLException Description copied from interface:FieldStrategy
Load this field's key value using the given result. The result will contain the columns fromValueMapping.getColumns()
.- Specified by:
loadKeyProjection
in interfaceFieldStrategy
- Overrides:
loadKeyProjection
in classAbstractFieldStrategy
- Throws:
SQLException
-
loadProjection
public Object loadProjection(JDBCStore store, JDBCFetchConfiguration fetch, Result res, Joins joins) throws SQLException Description copied from interface:FieldStrategy
Load this field value using the given result. The result will contain the columns fromValueMapping.getColumns()
.- Specified by:
loadProjection
in interfaceFieldStrategy
- Overrides:
loadProjection
in classAbstractFieldStrategy
- Throws:
SQLException
-
join
Description copied from interface:FieldStrategy
Join this value to the class table. Does nothing by default.- Specified by:
join
in interfaceFieldStrategy
- Overrides:
join
in classAbstractFieldStrategy
-
joinKey
Description copied from interface:FieldStrategy
Join the key value to the class table. Does nothing by default.- Specified by:
joinKey
in interfaceFieldStrategy
- Overrides:
joinKey
in classAbstractFieldStrategy
-
getJoinForeignKey
- Specified by:
getJoinForeignKey
in classContainerFieldStrategy
-
getIndependentElementMappings
Description copied from class:ContainerFieldStrategy
Return all independent mappings to which this strategy must join in order to access collection elements, or empty array if none.- Specified by:
getIndependentElementMappings
in classContainerFieldStrategy
- Parameters:
traverse
- whether we're traversing through to the related type- See Also:
-
handleMappedByForeignKey
protected void handleMappedByForeignKey(boolean adapt) -
isTypeUnjoinedSubclass
-
populateKey
protected boolean populateKey(Row row, OpenJPAStateManager valsm, Object obj, StoreContext ctx, RowManager rm, JDBCStore store) throws SQLException - Throws:
SQLException
-