2013-03-16 39 views
1

我在玩彈簧數據和mongodb。我正在嘗試實現的是在創建和/或更新對象時自動設置createdOn和updatedOn日期。所以我基本上創建了一個保存createdOn和updatedOn日期屬性的「BaseDocument」,並創建了AbstractMongoDbListener,這樣我可以在保存之前截取文檔(onBeforeSave),然後設置這些日期。問題是,如果我不將這些日期添加到擴展BaseDocument的類的構造函數,那些日期將不會持久化到數據庫。該子類需要在其構造函數上創建createdOn和updatedOn以獲得持久化,並且這與自動創建這些日期的想法相混淆。什麼是一個很好的戰略來實施呢?自動設置createdOn和UpdatedOn

在此先感謝!

+0

BaseDocument類是否具有適當的geters和setters? – 2013-03-16 04:50:38

回答

8

Spring Data MongoDB 1.2.0中已經實現了審計支持。爲了使用,你需要在你的類路徑中使用joda-time,並將創建和修改的日期類型設置爲DateTime。所有必需的步驟

  • 添加行家依賴
<dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.2</version> 
    </dependency> 
  • 在你的類審計加入支持Spring配置
<mongo:auditing /> 
  • 註釋屬性,如:
@CreatedDate 
    private DateTime created; 

    @LastModifiedDate 
    private DateTime modified; 

東西要記住:當您保存文檔,而無需_id字段設置創建日期時,才設置。

+0

這就是我一直在尋找的!謝謝 – Lemmerich 2013-03-28 02:30:45

+0

如何使用Java @Configuration類以編程方式添加審計支持? – Erik 2014-11-18 21:29:36

+3

@Erik是的,在'@ Configuration'類中使用'@ EnableMongoAuditing':http://docs.spring.io/spring-data/mongodb/docs/1.4.x/reference/html/mongo.core.html – 2015-01-02 00:53:52

0

好吧,通過使用onBeforeConvert而不是onBeforeSave得到它的工作。我設置的是源對象而不是DBObject。在轉換之前設置它就可以實現。