2014-11-04 1 views
10

현재 스프링 데이터 mongodb 1.6.0-RELEASE를 사용하고 있으며 감사 기능이 있습니다. I 내 구성 클래스 위에 @EnableMongoAuditing 주석을 추가하십시오. 그리고 내 빈은 다음과 같습니다 :스프링 데이터 mongodb 감사가 작동하지 않습니다. (Java config)

@Document 
public class MyBean{ 

@Id 
private AnotherCustomBean anotherCustomBean = new AnotherCustomBean(); 

@CreatedDate 
private Date creationDate; 

@LastModifiedDate 
private Date lastModifiedDate; 

. 
. 
. 

내가 mongoTemplate.save(myBean);와 함께이 콩을 저장할 때 아니에요 만든 날짜와 마지막으로 수정 한 날짜를 설정 ... 그리고 그것은 오류가 없습니다.

도움이 되시길 바랍니다.

감사합니다.

+0

당신은 bean에이 속성을 추가해야합니다. 그래서 ** Spring **에게 현재 저장 속성이 누구인지 알려줄 필요가 있다고 생각합니다. @ CreatedBy private String createdBy; 또 다른 아이디어는 캡처하려는 정보에 따라 주석을 선택적으로 적용 할 수 있다는 것입니다. 특정 시점을 캡처하는 주석은 JodaTimes DateTime, 레거시 Java 날짜 및 달력, JDK8 날짜/시간 유형 및 Long/Long 유형의 등록 정보에서 사용할 수 있습니다. –

+0

실제로 @CreatedBy 주석은 필수가 아니며 joda-time이 켜져 있습니다. classpath는 이미 아무 문제가 없어야합니다. –

답변

5

를 사용하는 클래스 패스에 joda 시간을 추가하려고하지 않습니다. , 당신은 ObjectId가 (새 저장된 객체는 null)을 정의해야 제대로 봄의 감사를 사용하려면 스프링은 이후 @LastModifiedDate@CreatedDate

을 결정하는 방법 이잖아, 내가 Auditable<String,String>

를 구현하여 @Id에 가능한 사용 사용자 정의 콩을 만들 수있는 방법을 발견 @Felby에

감사합니다 :

내가 필요한 @Id 필드 만 @CreatedDate 및 @CreatedBy 주석의 저장() 시 null이 될 것을 발견했다. @LastModifiedDate 및 @LastModifiedBy 필드는 에 관계없이 @Id 필드가 초기화되었는지 여부에 관계없이 에 관계없이 작동했습니다.

+3

'@ Id' 필드는'@ CreatedDate'와'@ CreatedBy' 어노테이션에 대해서만'save()'할 때'null'이어야한다는 것을 알게되었습니다. '@ LastModifiedDate'와'@ LastModifiedBy' 필드는'@ Id' 필드가 초기화되었는지 여부에 관계없이 작동했습니다. – Felby

0

나는 정확히 알고 있지만, 실제 문제는 @Id 주석이었다 날짜 관련 감사 주석

<dependency> 
    <groupId>joda-time</groupId> 
    <artifactId>joda-time</artifactId> 
    <version>2.2</version> 
</dependency>