Tôi đang cố gắng sử dụng các khả năng kiểm tra của Dữ liệu Mùa xuân (kết hợp với Khởi động Mùa xuân và Phục hồi Dữ liệu Mùa xuân), nhưng các trường kiểm toán không được đặt trên lưu. Tất cả các lưu kết quả trong một ngoại lệ hạn chế từ cố gắng để tiết kiệm một null "Tạo bởi."Làm cách nào để định cấu hình Kiểm tra qua cấu hình Java trong dữ liệu Spring (và phần còn lại của dữ liệu Spring)?
Theo spring data docs, tôi chỉ có thể đặt chú thích kiểm tra thích hợp (@ CreatedDate/etc) trên thực thể của tôi và tạo AuditorAware <> khả dụng cho ngữ cảnh ứng dụng. Tôi biết đậu kiểm tra của tôi đang được tạo ra từ việc thiết lập một điểm ngắt trong trình gỡ rối.
Câu hỏi của tôi là:
1) Có cần thiết cho tôi để tạo ra một AuditingEntityListener, hay tôi nên mong đợi một phải được cung cấp từ việc @EnableJpaAuditing? (không rõ ràng trong tài liệu về cấu hình java)
2) Có cấu hình nào khác trong mã bên dưới mà tôi thiếu để thiết lập kiểm tra tự động không?
3) Tôi đang gọi mã tạo từ POST đến Spring Data Rest, có bất kỳ cảnh báo đặc biệt nào khi sử dụng chức năng kiểm tra này kết hợp với Spring Data Rest không?
@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 ...
Và cấu hình:
@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;
}
}
}
Bất kỳ giúp đỡ được nhiều đánh giá, cảm ơn!
"chỉ định @EntityListeners (AuditingEntityListener.class) trên lớp miền của bạn" là bước thiếu quan trọng! Điều này không được đề cập trong tài liệu tham khảo, có lẽ nên có một vấn đề jira cho việc này. – Jay
@Jay, nó được đề cập trong tài liệu Tham khảo dữ liệu Spring Jpa. http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.auditing.configuration. Nó chỉ là cấu hình XML chứ không phải trong Java Config. –
Đó là ý của tôi: nó không được đề cập trong cấu hình java. Cám ơn phản hồi của bạn! – Jay