4

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

提前致谢!

4

2 回答 2

14

审计支持已在 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 字段的文档时设置。

于 2013-03-17T14:08:22.027 回答
0

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

于 2013-03-16T15:45:35.727 回答