Interface AuditStrategy

All Known Subinterfaces:
AuditStrategy
All Known Implementing Classes:
DefaultAuditStrategy, org.hibernate.envers.strategy.internal.DefaultAuditStrategy, org.hibernate.envers.strategy.internal.ValidityAuditStrategy, ValidityAuditStrategy

@Incubating public interface AuditStrategy
A strategy abstraction for how to audit entity changes.
Since:
5.4
  • Method Summary

    Modifier and Type
    Method
    Description
    default void
    Add additional columns to the audit mappings.
    void
    addAssociationAtRevisionRestriction(org.hibernate.envers.internal.tools.query.QueryBuilder rootQueryBuilder, org.hibernate.envers.internal.tools.query.Parameters parameters, String revisionProperty, String revisionEndProperty, boolean addAlias, org.hibernate.envers.internal.entities.mapper.relation.MiddleIdData referencingIdData, String versionsMiddleEntityName, String eeOriginalIdPropertyPath, String revisionPropertyPath, String originalIdPropertyName, String alias1, boolean inclusive, org.hibernate.envers.internal.entities.mapper.relation.MiddleComponentData... componentDatas)
    Update the rootQueryBuilder with an extra WHERE clause to restrict the revision for a middle-entity association.
    void
    addEntityAtRevisionRestriction(Configuration configuration, org.hibernate.envers.internal.tools.query.QueryBuilder rootQueryBuilder, org.hibernate.envers.internal.tools.query.Parameters parameters, String revisionProperty, String revisionEndProperty, boolean addAlias, org.hibernate.envers.internal.entities.mapper.relation.MiddleIdData idData, String revisionPropertyPath, String originalIdPropertyName, String alias1, String alias2, boolean inclusive)
    Update the rootQueryBuilder with an extra WHERE clause to restrict the revision for a two-entity relation.
    void
    perform(SharedSessionContractImplementor session, String entityName, Configuration configuration, Object id, Object data, Object revision)
    Perform the persistence of audited data for regular entities.
    void
    performCollectionChange(SharedSessionContractImplementor session, String entityName, String propertyName, Configuration configuration, org.hibernate.envers.internal.entities.mapper.PersistentCollectionChangeData persistentCollectionChangeData, Object revision)
    Perform the persistence of audited data for collection ("middle") entities.
    default void
    Performs post initialization of the audit strategy implementation.
  • Method Details

    • addAdditionalColumns

      default void addAdditionalColumns(MappingContext mappingContext)
      Add additional columns to the audit mappings.
      Parameters:
      mappingContext - The mapping context.
    • postInitialize

      default void postInitialize(AuditStrategyContext context)
      Performs post initialization of the audit strategy implementation.
      Parameters:
      context - the audit strategy context, never null
    • perform

      void perform(SharedSessionContractImplementor session, String entityName, Configuration configuration, Object id, Object data, Object revision)
      Perform the persistence of audited data for regular entities.
      Parameters:
      session - Session, which can be used to persist the data.
      entityName - Name of the entity, in which the audited change happens
      configuration - The audit entity configuration.
      id - Id of the entity.
      data - Audit data to persist.
      revision - Current revision data.
    • performCollectionChange

      void performCollectionChange(SharedSessionContractImplementor session, String entityName, String propertyName, Configuration configuration, org.hibernate.envers.internal.entities.mapper.PersistentCollectionChangeData persistentCollectionChangeData, Object revision)
      Perform the persistence of audited data for collection ("middle") entities.
      Parameters:
      session - Session, which can be used to persist the data.
      entityName - Name of the entity, in which the audited change happens.
      propertyName - The name of the property holding the persistent collection
      configuration - audit configuration
      persistentCollectionChangeData - Collection change data to be persisted.
      revision - Current revision data
    • addEntityAtRevisionRestriction

      void addEntityAtRevisionRestriction(Configuration configuration, org.hibernate.envers.internal.tools.query.QueryBuilder rootQueryBuilder, org.hibernate.envers.internal.tools.query.Parameters parameters, String revisionProperty, String revisionEndProperty, boolean addAlias, org.hibernate.envers.internal.entities.mapper.relation.MiddleIdData idData, String revisionPropertyPath, String originalIdPropertyName, String alias1, String alias2, boolean inclusive)
      Update the rootQueryBuilder with an extra WHERE clause to restrict the revision for a two-entity relation. This WHERE clause depends on the AuditStrategy.
      Parameters:
      configuration - the Configuration
      rootQueryBuilder - the QueryBuilder that will be updated
      parameters - root parameters to which restrictions shall be added
      revisionProperty - property of the revision column
      revisionEndProperty - property of the revisionEnd column (only used for ValidityAuditStrategy)
      addAlias - boolean indicator if a left alias is needed
      idData - id-information for the two-entity relation (only used for DefaultAuditStrategy)
      revisionPropertyPath - path of the revision property (only used for ValidityAuditStrategy)
      originalIdPropertyName - name of the id property (only used for ValidityAuditStrategy)
      alias1 - an alias used for subquery (only used for ValidityAuditStrategy)
      alias2 - an alias used for subquery (only used for ValidityAuditStrategy)
      inclusive - indicates whether revision number shall be treated as inclusive or exclusive
    • addAssociationAtRevisionRestriction

      void addAssociationAtRevisionRestriction(org.hibernate.envers.internal.tools.query.QueryBuilder rootQueryBuilder, org.hibernate.envers.internal.tools.query.Parameters parameters, String revisionProperty, String revisionEndProperty, boolean addAlias, org.hibernate.envers.internal.entities.mapper.relation.MiddleIdData referencingIdData, String versionsMiddleEntityName, String eeOriginalIdPropertyPath, String revisionPropertyPath, String originalIdPropertyName, String alias1, boolean inclusive, org.hibernate.envers.internal.entities.mapper.relation.MiddleComponentData... componentDatas)
      Update the rootQueryBuilder with an extra WHERE clause to restrict the revision for a middle-entity association. This WHERE clause depends on the AuditStrategy.
      Parameters:
      rootQueryBuilder - the QueryBuilder that will be updated
      parameters - root parameters to which restrictions shall be added
      revisionProperty - property of the revision column
      revisionEndProperty - property of the revisionEnd column (only used for ValidityAuditStrategy)
      addAlias - boolean indicator if a left alias is needed
      referencingIdData - id-information for the middle-entity association (only used for DefaultAuditStrategy)
      versionsMiddleEntityName - name of the middle-entity
      eeOriginalIdPropertyPath - name of the id property (only used for ValidityAuditStrategy)
      revisionPropertyPath - path of the revision property (only used for ValidityAuditStrategy)
      originalIdPropertyName - name of the id property (only used for ValidityAuditStrategy)
      alias1 - an alias used for subqueries (only used for DefaultAuditStrategy)
      inclusive - indicates whether revision number shall be treated as inclusive or exclusive
      componentDatas - information about the middle-entity relation