【问题标题】:Setting createdOn and UpdatedOn automatically自动设置 createdOn 和 UpdatedOn
【发布时间】:2013-03-16 04:31:08
【问题描述】:

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

提前致谢!

【问题讨论】:

  • BaseDocument 类是否有合适的 getter 和 setter?

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


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    相关资源
    最近更新 更多