You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data MongoDB自动设置BaseEntity基础字段的最佳实现方式

最简洁实现方式:启用Spring Data MongoDB审计功能

在Spring Boot 3.x + Java 17环境下,最简洁的实现是利用Spring Data MongoDB的审计功能,通过注解自动填充createdOn和updatedOn字段,无需编写手动赋值的回调方法。

步骤1:修改BaseEntity,添加审计注解

import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.mongodb.core.mapping.MongoId;

import java.time.Instant;

public class BaseEntity {
    @MongoId
    private ObjectId id;

    @CreatedDate // 自动填充创建时间
    private Instant createdOn;

    @LastModifiedDate // 自动填充更新时间
    private Instant updatedOn;

    // 按需添加getter/setter
    public ObjectId getId() {
        return id;
    }

    public void setId(ObjectId id) {
        this.id = id;
    }

    public Instant getCreatedOn() {
        return createdOn;
    }

    public Instant getUpdatedOn() {
        return updatedOn;
    }
}

步骤2:启用MongoDB审计功能

在Spring Boot启动类上添加@EnableMongoAuditing注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.mongodb.config.EnableMongoAuditing;

@SpringBootApplication
@EnableMongoAuditing
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

关键说明

  • @CreatedDate:实体首次保存时,自动将字段设为当前时间。
  • @LastModifiedDate:实体更新时,自动将字段更新为当前时间。
  • @MongoId:Spring Data MongoDB 3.x推荐用此注解替代旧的@Id,兼容ObjectId、String等多种ID类型,若习惯用@Id也可保留,功能不受影响。
  • 零手动逻辑:审计功能会自动监听实体的CRUD操作,完成字段赋值,无需编写任何回调方法,是最简洁的实现方案。

内容的提问来源于stack exchange,提问作者SRI HARSHA S V S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:43:10