2

在我的审计实体中,我有以下字段:

@LastModifiedBy
private String lastModifiedBy;

@LastModifiedDate
private OffsetDateTime lastModifiedDate;

但是当实体被删除时它们不会改变。据我了解,我需要在那里进行自定义org.springframework.data.jpa.domain.support.AuditingEntityListener和添加@PreRemove,但我不明白如何实现这一点,因为我总是有

org.hibernate.InstantiationException: Could not instantiate managed bean directly

是否有任何其他选项可以跟踪删除事件并将更新的字段存储到 Envers 审计表?

4

1 回答 1

1

做了这个解决方法:

public class CustomValidityAuditStrategy extends ValidityAuditStrategy {

private final AuditorAware<String> auditorAware = ...;

@Override
public void perform(final Session session, final String entityName, final AuditEntitiesConfiguration audEntitiesCfg, final Serializable id, final Object data, final Object revision) {
    if (data instanceof Map) {
        final Map dataToUpdate = (Map) data;
        dataToUpdate.put("lastModifiedBy", auditorAware.get());
        dataToUpdate.put("lastModifiedDate", OffsetDateTime.now());
    }
    super.perform(session, entityName, audEntitiesCfg, id, data, revision);
}

}

于 2019-11-27T15:34:44.430 回答