Spring Mon go Аудит не работает @CreatedDate @CreatedBy - PullRequest
0 голосов
/ 08 января 2020

Я использую Spring Mon go Auditing и @CreatedDate @CreatedBy не работает, но @LastModifiedDate и @LastModifiedBy работают нормально.

Я добавил @EnableMongoAuditing в класс конфигурации, а также определил AuditAware.

@Component("securityAuditorAware")
public class SecurityAuditorAware implements AuditorAware<String> {

 @Override
 public Optional<String> getCurrentAuditor() {
  return Optional.ofNullable(SecurityUtils.getUserPrincipal()).map(AuthenticatedUser::getIssuer);
 } 
}

Класс аудита:

@Document
public class Template  {

 @Id
 private UUID id = UUID.randomUUID();

 @CreatedDate
 private Date createdOn;
 @LastModifiedDate
 private Date modifiedOn;
 @CreatedBy
 private String createdBy;
 @LastModifiedBy
 private String modifiedBy;
}

Когда я сохраняю документ, он помещается в NULL как в createOn , так и в создалBy , но справа значения в updatedOn и ModifiedBy

Спасибо за помощь

1 Ответ

1 голос
/ 09 января 2020

Если ваша сущность не наследует интерфейс Persistable, вы должны определить поле, помеченное @Version (org.springframework.data.annotation.Version).

@Document
public class Template {

 @Id
 private UUID id = UUID.randomUUID();

 @CreatedDate
 private Date createdOn;
 @LastModifiedDate
 private Date modifiedOn;
 @CreatedBy
 private String createdBy;
 @LastModifiedBy
 private String modifiedBy;
 @Version
 private Integer version;
}

С другой стороны, если ваш интерфейс наследования сущностей Persistable, вы должны реализовать логическое, чтобы обнаружить сущность, которая никогда не сохранялась ранее.

Для получения дополнительной информации вы можете проверить два класса: PersistentEntityIsNewStrategy и PersistableIsNewStrategy

...