自动设置createdOn和UpdatedOn

时间:2013-03-16 04:31:09

标签: java spring spring-data spring-data-mongodb

我正在玩spring-data和mongodb。我想要实现的是在创建和/或更新对象时自动设置createdOn和updatedOn日期。所以我基本上创建了一个“BaseDocument”,它包含createdOn和updatedOn日期属性并创建了一个AbstractMongoDbListener,这样我就可以在保存之前截取文档(onBeforeSave),然后设置这些日期。问题是,如果我不将这些日期添加到扩展BaseDocument的类的构造函数中,那些日期将不会持久存储到数据库中。子类需要在其构造函数上使用createdOn和updatedOn来获取那些持久化的内容,并且这样做会使自动创建这些日期的想法变得混乱。实施该策略的好策略是什么?

提前致谢!

2 个答案:

答案 0 :(得分:12)

审计支持已在Spring Data MongoDB 1.2.0中实现。为了使用你需要在你的类路径上有joda-time并将创建和修改日期的类型设置为DateTime。所有必需的步骤

  • 添加maven依赖
    <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字段的情况下保存文档时才会设置创建日期。

答案 1 :(得分:0)

好的,通过使用onBeforeConvert而不是onBeforeSave来实现它。我正在设置源对象而不是DBObject。在转换之前设置它可以解决问题。