morphia支持自动时间戳吗?

时间:2012-12-20 13:20:56

标签: mongodb morphia

有没有人知道在创建/修改操作期间,morphia是否支持在mongodb中创建/更新集合中文档的自动时间戳。

我已经知道mongodb中没有这种支持。我想知道是否有办法在morphia驱动程序中获取数据或文档的最后访问/更新时间。

谢谢, sadish

2 个答案:

答案 0 :(得分:7)

我通常使用基本实体,所有其他实体都扩展。它提供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 :(得分:1)

如果这不是您正在寻找的确切答案,请提前抱歉。但简短的回答是否定的。

最新的 Morphia 似乎没有支持该操作的API。也许有一个错误打开来支持这个。在此期间,您应该使用您最喜欢的java.util.Date或java.sql.Timestamp构造函数。

Morphia 的源代码内置了相应的转换器来处理此TimestampConverter.java

只有切线相关。如果您使用$currentDate的原因是为了避免多个主机之间的时钟偏差问题,那么您就会咆哮错误的树。虽然$currentDate文档中没有明确说明,但有文件表明 MongoDB 无法解决各种主机之间的时钟偏差问题。这可以在documentation for ObjectId.getTimestamp()中找到。因此,与客户端的时间戳相比,$currentDate的使用将提供很少的好处。