我正在玩spring-data和mongodb。我想要实现的是在创建和/或更新对象时自动设置createdOn和updatedOn日期。所以我基本上创建了一个“BaseDocument”,它包含createdOn和updatedOn日期属性并创建了一个AbstractMongoDbListener,这样我就可以在保存之前截取文档(onBeforeSave),然后设置这些日期。问题是,如果我不将这些日期添加到扩展BaseDocument的类的构造函数中,那些日期将不会持久存储到数据库中。子类需要在其构造函数上使用createdOn和updatedOn来获取那些持久化的内容,并且这样做会使自动创建这些日期的想法变得混乱。实施该策略的好策略是什么?
提前致谢!
答案 0 :(得分:12)
审计支持已在Spring Data MongoDB 1.2.0中实现。为了使用你需要在你的类路径上有joda-time并将创建和修改日期的类型设置为DateTime。所有必需的步骤
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.2</version>
</dependency>
<mongo:auditing />
@CreatedDate
private DateTime created;
@LastModifiedDate
private DateTime modified;
要记住的事项:只有在未设置_id字段的情况下保存文档时才会设置创建日期。
答案 1 :(得分:0)
好的,通过使用onBeforeConvert而不是onBeforeSave来实现它。我正在设置源对象而不是DBObject。在转换之前设置它可以解决问题。