Опитвам се да използвам възможностите за одит на Spring Data (в комбинация с Spring Boot и Spring Data Rest), но полетата за одит не се задават при запазване. Всички записвания водят до изключение на ограничение от опит за запазване на нула „Създадено от“.
Според документи с пролетни данни, аз трябва просто да мога да поставя подходящите анотации за одит (@CreatedDate/etc) на моя обект и да направя AuditorAware‹> достъпен за контекста на приложението. Знам, че моят bean за одитор се създава от задаване на точка на прекъсване в програмата за отстраняване на грешки.
Въпросите ми са:
1) Необходимо ли е да създам AuditingEntityListener или трябва да очаквам такъв да бъде предоставен от @EnableJpaAuditing? (не е ясно в документите относно конфигурацията на Java)
2) Има ли друга конфигурация в кода по-долу, която ми липсва, за да настроя автоматичен одит?
3) Извиквам кода за създаване от POST към Spring Data Rest, има ли някакви специални предупреждения при използването на тази функция за одит в комбинация с Spring Data Rest?
@Entity
public class Tag implements Serializable {
// ... other fields omitted...
@CreatedDate
@Temporal(TemporalType.TIMESTAMP)
private Date created = new Date();
@CreatedBy
@Basic(optional = false)
@Column(name = "CREATED_BY", nullable = false, length = 24)
private String createdBy = "";
@LastModifiedDate
@Basic(optional = false)
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date updated = new Date();
@LastModifiedBy
@Basic(optional = false)
@Column(name = "UPDATED_BY", nullable = false, length = 24)
private String updatedBy = "";
// ... getters and setters were generated ...
И конфигурацията:
@EnableJpaAuditing
@Configuration
public class AuditingConfig {
@Bean
public AuditorAware<String> createAuditorProvider() {
return new SecurityAuditor();
}
@Bean
public AuditingEntityListener createAuditingListener() {
return new AuditingEntityListener();
}
public static class SecurityAuditor implements AuditorAware<String> {
@Override
public String getCurrentAuditor() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String username = auth.getName();
return username;
}
}
}
Всяка помощ е много ценена, благодаря!