java - 自动设置 createdOn 和 UpdatedOn

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

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

提前致谢!

最佳答案

审计支持已在 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 字段集的文档时,才会设置创建日期。

    关于java - 自动设置 createdOn 和 UpdatedOn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15445592/

    相关文章:

    java - Spark SQL 长 double 值带有指数

    java - 为什么这个简单的 Java 代码不能通过这个测试?

    java - 使用 postgreSQL 中的 jpa 存储库从序列中获取下一个值

    java - java中的正则表达式提取一个数字

    java - 使 TableRows 宽度均匀

    java - 我可以在另一个注释中使用属性中的 Spring @Value 变量吗?

    spring - 使用 Spring Integration DSL 进行中流文件采购

    java - 编译时编织并在构造函数上 Autowiring

    java - Spring 。使用@Bean 注册方面

    java - 在Java中自动生成域类(具有与grails域类类似的功能)