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
Modifier 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 String
Fields 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
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
addReadOnlyMappings
(ClassDescriptor aDescriptor, DatabaseField field, List allMappings) INTERNAL: Add the writable mapping for the given field to the allMappings list.protected void
addWritableMapping
(ClassDescriptor aDescriptor, DatabaseField field, List allMappings) INTERNAL: Add the read only mappings for the given field to the allMappings list.clone()
INTERNAL: Clone the CMP3Policyvoid
convertClassNamesToClasses
(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 Field
INTERNAL: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.void
initialize
(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.boolean
INTERNAL: Return if this policy is for CMP3.void
remoteInitialize
(ClassDescriptor descriptor, AbstractSession session) INTERNAL: Initialize the CMPPolicy settings for remote sessions.void
setPKClass
(Class<?> pkClass) ADVANCED:void
setPrimaryKeyClassName
(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:
convertClassNamesToClasses
in classCMPPolicy
-
isCMP3Policy
public boolean isCMP3Policy()INTERNAL: Return if this policy is for CMP3.- Overrides:
isCMP3Policy
in classCMPPolicy
-
setPrimaryKeyClassName
INTERNAL: -
getPKClass
INTERNAL: Return the java Class representing the primary key class name- Overrides:
getPKClass
in classCMPPolicy
-
setPKClass
ADVANCED: -
getPKClassName
INTERNAL: -
getPKClassInstance
INTERNAL:- Overrides:
getPKClassInstance
in 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:
createPrimaryKeyFromId
in 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:
createBeanUsingKey
in 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:
getKeyClassFields
in 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:
initialize
in classCMPPolicy
- Throws:
DescriptorException
-
remoteInitialize
public void remoteInitialize(ClassDescriptor descriptor, AbstractSession session) throws DescriptorException INTERNAL: Initialize the CMPPolicy settings for remote sessions.- Overrides:
remoteInitialize
in classCMPPolicy
- Throws:
DescriptorException
-