Package org.hibernate.metamodel.mapping
Interface NaturalIdMapping
-
- All Superinterfaces:
Bindable
,JdbcMappingContainer
,MappingModelExpressible
,ModelPart
,VirtualModelPart
- All Known Implementing Classes:
AbstractNaturalIdMapping
,CompoundNaturalIdMapping
,SimpleNaturalIdMapping
@Incubating public interface NaturalIdMapping extends VirtualModelPart
Mapping for an entity's natural-id, if one is defined. Natural identifiers are an alternative form of uniquely identifying a specific row. In this sense, they are similar to a primary key. In fact most natural identifiers will also be classified as "candidate keys" (as in a column or group of columns that are considered candidates for primary-key). However, a natural id has fewer restrictions than a primary key. While these lessened restrictions make them inappropriate for use as a primary key, they are still generally usable as unique locators with caveats. General reasons a natural id might be inappropriate for use as a primary key are- it contains nullable values
- it contains modifiable values
See other sources for a more complete discussion of data modeling.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.hibernate.metamodel.mapping.Bindable
Bindable.JdbcValuesBiConsumer<X,Y>, Bindable.JdbcValuesConsumer
-
Nested classes/interfaces inherited from interface org.hibernate.metamodel.mapping.ModelPart
ModelPart.JdbcValueBiConsumer<X,Y>, ModelPart.JdbcValueConsumer
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description int
calculateHashCode(Object value)
Calculate the hash-code of a natural-id valueObject
extractNaturalIdFromEntity(Object entity)
Given an entity instance, extract the normalized natural id representationObject
extractNaturalIdFromEntityState(Object[] state)
Given an array of "full entity state", extract the normalized natural id representationNaturalIdDataAccess
getCacheAccess()
Access to the natural-id's L2 cache access.List<SingularAttributeMapping>
getNaturalIdAttributes()
The attribute(s) making up the natural-id.default String
getPartName()
The local part name, which is generally the unqualified role nameboolean
isMutable()
Whether the natural-id is mutable.NaturalIdLoader<?>
makeLoader(EntityMappingType entityDescriptor)
Make a loader capable of loading a single entity by natural-idMultiNaturalIdLoader<?>
makeMultiLoader(EntityMappingType entityDescriptor)
Make a loader capable of loading multiple entities by natural-idObject
normalizeInput(Object incoming)
Normalize a user-provided natural-id value into the representation Hibernate uses internallyvoid
validateInternalForm(Object naturalIdValue)
Validates a natural id value(s) for the described natural-id based on the expected internal representationvoid
verifyFlushState(Object id, Object[] currentState, Object[] loadedState, SharedSessionContractImplementor session)
Verify the natural-id value(s) we are about to flush to the database-
Methods inherited from interface org.hibernate.metamodel.mapping.Bindable
addToCacheKey, disassemble, forEachDisassembledJdbcValue, forEachDisassembledJdbcValue, forEachDisassembledJdbcValue, forEachDisassembledJdbcValue, forEachJdbcType, forEachJdbcValue, forEachJdbcValue, forEachJdbcValue, forEachJdbcValue, getJdbcTypeCount
-
Methods inherited from interface org.hibernate.metamodel.mapping.JdbcMappingContainer
forEachJdbcType, getJdbcMapping, getSingleJdbcMapping
-
Methods inherited from interface org.hibernate.metamodel.mapping.ModelPart
applySqlSelections, applySqlSelections, areEqual, asAttributeMapping, asBasicValuedModelPart, asEntityMappingType, breakDownJdbcValues, breakDownJdbcValues, createDomainResult, decompose, decompose, findContainingEntityMapping, forEachSelectable, forEachSelectable, getJavaType, getNavigableRole, getPartMappingType, hasPartitionedSelectionMapping, isEntityIdentifierMapping
-
Methods inherited from interface org.hibernate.metamodel.mapping.VirtualModelPart
isVirtual
-
-
-
-
Field Detail
-
PART_NAME
static final String PART_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
getNaturalIdAttributes
List<SingularAttributeMapping> getNaturalIdAttributes()
The attribute(s) making up the natural-id.
-
isMutable
boolean isMutable()
Whether the natural-id is mutable.- API Note:
- For compound natural-ids, this is true if any of the attributes are mutable.
-
getPartName
default String getPartName()
Description copied from interface:ModelPart
The local part name, which is generally the unqualified role name- Specified by:
getPartName
in interfaceModelPart
-
getCacheAccess
NaturalIdDataAccess getCacheAccess()
Access to the natural-id's L2 cache access. Returns null if the natural-id is not configured for caching
-
verifyFlushState
void verifyFlushState(Object id, Object[] currentState, Object[] loadedState, SharedSessionContractImplementor session)
Verify the natural-id value(s) we are about to flush to the database
-
extractNaturalIdFromEntityState
Object extractNaturalIdFromEntityState(Object[] state)
Given an array of "full entity state", extract the normalized natural id representation- Parameters:
state
- The attribute state array- Returns:
- The extracted natural id values. This is a normalized
-
extractNaturalIdFromEntity
Object extractNaturalIdFromEntity(Object entity)
Given an entity instance, extract the normalized natural id representation- Parameters:
entity
- The entity instance- Returns:
- The extracted natural id values
-
normalizeInput
Object normalizeInput(Object incoming)
Normalize a user-provided natural-id value into the representation Hibernate uses internally- Parameters:
incoming
- The user-supplied value- Returns:
- The normalized, internal representation
-
validateInternalForm
void validateInternalForm(Object naturalIdValue)
Validates a natural id value(s) for the described natural-id based on the expected internal representation
-
calculateHashCode
int calculateHashCode(Object value)
Calculate the hash-code of a natural-id value- Parameters:
value
- The natural-id value- Returns:
- The hash-code
-
makeLoader
NaturalIdLoader<?> makeLoader(EntityMappingType entityDescriptor)
Make a loader capable of loading a single entity by natural-id
-
makeMultiLoader
MultiNaturalIdLoader<?> makeMultiLoader(EntityMappingType entityDescriptor)
Make a loader capable of loading multiple entities by natural-id
-
-