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.

See Also:
  • Field Details

  • Method Details

    • 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 interface ModelPart
    • 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