2012-12-20 44 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