Sto provando a utilizzare le funzionalità di auditing di Spring Data (in combinazione con Spring Boot e Spring Data Rest), ma i campi di controllo non vengono impostati in fase di salvataggio. Tutti i salvataggi determinano un'eccezione di vincolo dal tentativo di salvare un valore null "Creato da".Come configurare il controllo tramite Java Config in Spring Data (e Spring Data Rest)?
Secondo il spring data docs, dovrei essere in grado di mettere le annotazioni controllo riconosciute (@ CreatedDate/etc) sulla mia entità, e fa un AuditorAware <> a disposizione del contesto applicativo. So che il mio bean di auditor viene creato dall'impostazione di un breakpoint nel debugger.
Le mie domande sono:
1) E 'necessario per me creare un AuditingEntityListener, o dovrei aspettare un essere forniti da avere @EnableJpaAuditing? (non è chiaro nei documenti su java config)
2) Esiste un'altra configurazione nel codice seguente che mi manca per configurare il controllo automatico?
3) Sto chiamando il codice di creazione da un POST a Spring Data Rest, ci sono dei caveat speciali con l'utilizzo di questa funzionalità di controllo in combinazione con 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 ...
E la configurazione:
@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;
}
}
}
Qualsiasi aiuto è molto apprezzato, grazie!
"specifica @EntityListeners (AuditingEntityListener.class) sulla classe del dominio" è stato il passaggio critico mancante! Questo non è menzionato nella documentazione di riferimento, probabilmente dovrebbe esserci un problema con Jira. – Jay
@ Jay, è menzionato nella documentazione di riferimento di Spring Data Jpa. http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.auditing.configuration. È solo che è config XML e non in Java Config. –
Ecco cosa intendevo: non è menzionato nella configurazione java. Grazie per la risposta! – Jay