2014-11-04 64 views
10

我目前正在使用Spring的數據mongodb 1.6.0-RELEASE,我知道它有審計功能。 I 將@EnableMongoAuditing註釋放在我的配置類之上。而我的豆低於:春天的數據mongodb審計不工作..(Java配置)

@Document 
public class MyBean{ 

@Id 
private AnotherCustomBean anotherCustomBean = new AnotherCustomBean(); 

@CreatedDate 
private Date creationDate; 

@LastModifiedDate 
private Date lastModifiedDate; 

. 
. 
. 

當我保存這個bean與mongoTemplate.save(myBean);它不是設置創建日期和最後修改日期...而且它有沒有錯誤。

任何幫助,將不勝感激,

謝謝。

+0

我想你應該把這個屬性加入到你的bean中,這樣我們就需要告訴** Spring **誰是當前的保存屬性。@FengBy private String createdBy;另一個想法是,註釋可以選擇性地應用,具體取決於您想要捕獲哪些信息。捕獲時間點的註釋可用於JodaTimes DateTime類型的屬性,舊Java日期和日曆,JDK8日期/時間類型以及long/Long – 2014-11-04 12:02:58

+0

實際上@CreatedBy註釋不是強制的,也是joda-time classpath已經如此,應該沒問題。 – 2014-11-04 12:48:56

回答

5

的實際問題是@Id註解。要正確使用彈簧審計,你一定要定義的ObjectId(空新保存的對象),這就是春天如何決定@LastModifiedDate@CreatedDate

之後,我找到了一種方法,以使其能夠使用自定義bean上@Id通過實施Auditable<String,String>

感謝@Felby:

我發現需要@Id字段爲空的保存() 的只爲@CreatedDate和@CreatedBy標註的時間。 @LastModifiedDate和@LastModifiedBy字段不管 是否工作@Id字段是否被初始化。

+3

我發現只有'@ CreatedDate'和'@ CreatedBy'註釋時'@ Id'字段在'save()'時需要爲'null'。 @ @ LastModifiedDate'和'@ LastModifiedBy'字段無論「@ Id」字段是否被初始化都有效。 – Felby 2015-10-28 20:21:03

0

我不知道到底,但嘗試添加喬達時間類路徑的使用日期有關的審計註釋

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