2012-12-20 79 views
1

有誰知道morphia是否支持在創建/修改操作期間在mongodb中創建/更新集合中文檔的自動時間戳。嗎嗎嗎支持自動時間戳?

我已經知道這個支持在mongodb中不可用。我想知道是否有任何方法可以獲取morphia驅動程序中數據或文檔的上次訪問/更新時間。

感謝, sadish

回答

6

我一般採用的是基礎機構,這是所有其他實體延伸。它提供的ObjectId,創建日期,最後更改日期,禁用標誌,...

相關的代碼片段是這樣的:

protected Date creationDate; 
protected Date lastChange; 

// Getters and setters or final setters which don't do anything, 
// if you only want to allow the entity to update the values 

@PrePersist 
public void prePersist() { 
    creationDate = (creationDate == null) ? new Date() : creationDate; 
    lastChange = (lastChange == null) ? creationDate : new Date(); 
} 
1

對不起提前如果這不是確切的答案你正在尋找。但簡短的回答是否定的。

支持該操作的似乎沒有API在最新的Morphia中。也許有一個錯誤打開,以支持這一點。同時,您應該使用您最喜愛的構造函數來處理java.util.Date或java.sql.Timestamp。

的源代碼Morphia有適當的轉換器內置來處理這個TimestampConverter.java

只與切線相關。如果你使用$currentDate的理由是爲了避免多個主機之間的時鐘偏移問題,那麼你就會吠叫錯誤的樹。雖然在$currentDate文檔中沒有明確說明,但有文檔記錄,MongoDB沒有解決各種主機之間的時鐘偏移問題。這可以在documentation for ObjectId.getTimestamp()中找到。因此,$currentDate的使用與客戶端的時間標記相比幾乎沒有什麼好處。

+0

試着把你的答案中所述錯誤的鏈接。它會改善您的工作,並讓讀者更容易追蹤它。 – alejdg

+0

我沒有足夠的聲望來放置兩個以上的鏈接:D –

+0

嘗試使用評論。然後有人可以用它編輯答案。 – alejdg