Interface NaturalIdMapping

All Superinterfaces:
Bindable, JdbcMappingContainer, MappingModelExpressible, ModelPart, VirtualModelPart

@Incubating(since="5.4") 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 Also:
  • Field Details

  • Method Details

    • getNaturalIdClass

      @Nullable Class<?> getNaturalIdClass()
      A class which used as a wrapper for natural-id values.
    • getNaturalIdAttributes

      @Nonnull 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

      @Nonnull 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

      @Nullable 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(@Nonnull Object id, @Nonnull Object[] currentState, @Nullable Object[] loadedState, @Nonnull SharedSessionContractImplementor session)
      Verify the natural-id value(s) we are about to flush to the database
    • extractNaturalIdFromEntityState

      @Nullable Object extractNaturalIdFromEntityState(@Nullable Object[] state)
      Given an array of "full entity state", extract the normalized natural id representation.
      Parameters:
      state - The attribute state array, or null if no database snapshot exists
      Returns:
      The extracted natural id values, or null if the state or natural id is null.
    • extractNaturalIdFromEntity

      @Nullable Object extractNaturalIdFromEntity(@Nonnull Object entity)
      Given an entity instance, extract the normalized natural-id representation.
      Parameters:
      entity - The entity instance
      Returns:
      The extracted natural-id values.
    • normalizeInput

      @Nullable Object normalizeInput(@Nullable 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
    • isNormalized

      boolean isNormalized(@Nullable Object incoming)
      Whether the incoming value is in normalized internal form.
      See Also:
    • validateInternalForm

      void validateInternalForm(@Nullable Object naturalIdValue)
      Validates a natural id value(s) for the described natural-id based on the expected internal representation
    • calculateHashCode

      int calculateHashCode(@Nullable Object value)
      Calculate the hash-code of a natural-id value
      Parameters:
      value - The natural-id value
      Returns:
      The hash-code
    • makeLoader

      @Nonnull NaturalIdLoader<?> makeLoader(@Nonnull EntityMappingType entityDescriptor)
      Make a loader capable of loading a single entity by natural-id
    • makeMultiLoader

      @Nonnull MultiNaturalIdLoader<?> makeMultiLoader(@Nonnull EntityMappingType entityDescriptor)
      Make a loader capable of loading multiple entities by natural-id