java.lang.Object
org.eclipse.persistence.descriptors.CMPPolicy
org.eclipse.persistence.internal.jpa.CMP3Policy
- All Implemented Interfaces:
Serializable,Cloneable
- Direct Known Subclasses:
DynamicIdentityPolicy
Defines primary key extraction code for use in JPA. A descriptor should have a CMP3Policy
attached to handle basic Id as well as IdClass/EmbeddedId usage.
- Since:
- TopLink 10.1.3
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.eclipse.persistence.descriptors.CMPPolicy
CMPPolicy.KeyElementAccessor, CMPPolicy.KeyIsElementAccessor -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected HashMap<DatabaseField, CMPPolicy.KeyElementAccessor> Used to look up the KeyElementAccessor for a specific DatabaseField, used for resolving DerivedIdsprotected CMPPolicy.KeyElementAccessor[]Stores the fields for this classes compound primary key class if required.protected Class<?> protected StringFields inherited from class org.eclipse.persistence.descriptors.CMPPolicy
AFTER_EJBCREATE, AFTER_EJBPOSTCREATE, ALL_MODIFICATIONS, descriptor, forceUpdate, mappedClass, modificationDeferralLevel, nonDeferredCreateTime, NONE, pessimisticLockingPolicy, UNDEFINED, UPDATE_MODIFICATIONS, updateAllFields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddReadOnlyMappings(ClassDescriptor aDescriptor, DatabaseField field, List allMappings) INTERNAL: Add the writable mapping for the given field to the allMappings list.protected voidaddWritableMapping(ClassDescriptor aDescriptor, DatabaseField field, List allMappings) INTERNAL: Add the read only mappings for the given field to the allMappings list.clone()INTERNAL: Clone the CMP3PolicyvoidconvertClassNamesToClasses(ClassLoader classLoader) INTERNAL: Convert all the class-name-based settings in this object to actual class-based settings.createBeanUsingKey(Object key, AbstractSession session) INTERNAL: Use the key to create a bean and initialize its primary key fields.createPrimaryKeyFromId(Object key, AbstractSession session) INTERNAL: Use the key to create a EclipseLink primary key.protected FieldINTERNAL:protected CMPPolicy.KeyElementAccessor[]INTERNAL:<T> Class<T> INTERNAL: Return the java Class representing the primary key class nameINTERNAL:INTERNAL:getPkValueFromKeyForField(Object key, DatabaseField field, AbstractSession session) INTERNAL: Pull the value for the field from the key.voidinitialize(ClassDescriptor descriptor, AbstractSession session) INTERNAL: Initialize the CMPPolicy settings.protected CMPPolicy.KeyElementAccessor[]initializePrimaryKeyFields(Class<?> keyClass, AbstractSession session) INTERNAL: Cache the bean's primary key fields so speed up creating of primary key objects and initialization of beans.booleanINTERNAL: Return if this policy is for CMP3.voidremoteInitialize(ClassDescriptor descriptor, AbstractSession session) INTERNAL: Initialize the CMPPolicy settings for remote sessions.voidsetPKClass(Class<?> pkClass) ADVANCED:voidsetPrimaryKeyClassName(String pkClassName) INTERNAL:Methods inherited from class org.eclipse.persistence.descriptors.CMPPolicy
createPrimaryKeyInstance, createPrimaryKeyInstanceFromId, createPrimaryKeyInstanceFromPrimaryKeyValues, getClassInstance, getDeferModificationsUntilCommit, getDescriptor, getForceUpdate, getMappedClass, getNonDeferredCreateTime, getPessimisticLockingPolicy, getUpdateAllFields, hasPessimisticLockingPolicy, internalGetForceUpdate, internalGetUpdateAllFields, internalSetForceUpdate, internalSetUpdateAllFields, isSingleKey, setDeferModificationsUntilCommit, setDescriptor, setFieldValue, setForceUpdate, setMappedClass, setNonDeferredCreateTime, setPessimisticLockingPolicy, setUpdateAllFields
-
Field Details
-
keyClassFields
Stores the fields for this classes compound primary key class if required. -
fieldToAccessorMap
Used to look up the KeyElementAccessor for a specific DatabaseField, used for resolving DerivedIds -
pkClassName
-
pkClass
-
-
Constructor Details
-
CMP3Policy
public CMP3Policy()
-
-
Method Details
-
addWritableMapping
protected void addWritableMapping(ClassDescriptor aDescriptor, DatabaseField field, List allMappings) INTERNAL: Add the read only mappings for the given field to the allMappings list. -
addReadOnlyMappings
protected void addReadOnlyMappings(ClassDescriptor aDescriptor, DatabaseField field, List allMappings) INTERNAL: Add the writable mapping for the given field to the allMappings list. -
clone
INTERNAL: Clone the CMP3Policy -
convertClassNamesToClasses
INTERNAL: Convert all the class-name-based settings in this object to actual class-based settings. This method is used when converting a project that has been built with class names to a project with classes.- Overrides:
convertClassNamesToClassesin classCMPPolicy
-
isCMP3Policy
public boolean isCMP3Policy()INTERNAL: Return if this policy is for CMP3.- Overrides:
isCMP3Policyin classCMPPolicy
-
setPrimaryKeyClassName
INTERNAL: -
getPKClass
INTERNAL: Return the java Class representing the primary key class name- Overrides:
getPKClassin classCMPPolicy
-
setPKClass
ADVANCED: -
getPKClassName
INTERNAL: -
getPKClassInstance
INTERNAL:- Overrides:
getPKClassInstancein classCMPPolicy
-
createPrimaryKeyFromId
INTERNAL: Use the key to create a EclipseLink primary key. If the key is simple (direct mapped) then just add it to a vector, otherwise must go through the inefficient process of copying the key into the bean and extracting the key from the bean.- Overrides:
createPrimaryKeyFromIdin classCMPPolicy
-
getField
INTERNAL:- Returns:
- the field from the class with name equal to fieldName.
- Throws:
NoSuchFieldException
-
createBeanUsingKey
INTERNAL: Use the key to create a bean and initialize its primary key fields. Note: If is a compound PK then a primary key object is being used. This method should only be used for 'templates' when executing queries. The bean built will not be given an EntityContext and should not be used as an actual entity bean.- Overrides:
createBeanUsingKeyin classCMPPolicy- Parameters:
key- Object the primary key to use for initializing the bean's corresponding pk fields- Returns:
- Object
-
initializePrimaryKeyFields
protected CMPPolicy.KeyElementAccessor[] initializePrimaryKeyFields(Class<?> keyClass, AbstractSession session) INTERNAL: Cache the bean's primary key fields so speed up creating of primary key objects and initialization of beans. Note, we have to re-look up the fields for the bean class since these fields may have been loaded with the wrong loader (thank you Kirk). If the key is compound, we also have to look up the fields for the key. -
getKeyClassFields
INTERNAL:- Overrides:
getKeyClassFieldsin classCMPPolicy- Returns:
- Returns the keyClassFields.
-
getPkValueFromKeyForField
INTERNAL: Pull the value for the field from the key.- Parameters:
key- Object the primary key to use to get the value for the fieldfield- DatabaseField the field to find a value for- Returns:
- Object
-
initialize
public void initialize(ClassDescriptor descriptor, AbstractSession session) throws DescriptorException INTERNAL: Initialize the CMPPolicy settings.- Overrides:
initializein classCMPPolicy- Throws:
DescriptorException
-
remoteInitialize
public void remoteInitialize(ClassDescriptor descriptor, AbstractSession session) throws DescriptorException INTERNAL: Initialize the CMPPolicy settings for remote sessions.- Overrides:
remoteInitializein classCMPPolicy- Throws:
DescriptorException
-