Spring Data 填充 @LastModifiedDate 而非 @CreatedDate
Posted
技术标签:
【中文标题】Spring Data 填充 @LastModifiedDate 而非 @CreatedDate【英文标题】:Spring Data fills @LastModifiedDate by not @CreatedDate 【发布时间】:2017-12-14 09:00:55 【问题描述】:我有以下 Spring Boot 示例应用程序。
疯狂的是,如果我在 SampleApplication bean 上添加 @EnableMongoAuditing
注释,lastModifiedDate
将不会被 createDate
填充。这是为什么?我在网上搜索了很多人在更新期间清空createDate
时遇到问题,但我没有更新。
文档类:
@Document
public class SampleBean implements Persistable<String>
@Id
public String id;
@CreatedDate
public LocalDateTime createDate;
@LastModifiedDate
public LocalDateTime lastModifiedDate;
public String name;
@Override
public String getId()
return id;
@Override
public boolean isNew()
return id != null;
存储库接口:
@Repository
public interface SampleBeanRepository extends MongoRepository<SampleBean, String>
休息控制器:
@RestController
public class WebService
@Autowired
private SampleBeanRepository repository;
@RequestMapping("/insert")
public String insert()
SampleBean sampleBean = new SampleBean();
sampleBean.name = "Prefix" + new Random().nextInt(1000);
repository.insert(sampleBean);
return "done";
@RequestMapping("/")
public Collection<SampleBean> home()
return repository.findAll();
应用配置:
@SpringBootApplication
@EnableMongoAuditing
public class ApplicationConfig
public static void main(String[] args)
SpringApplication.run(ApplicationConfig.class, args);
【问题讨论】:
【参考方案1】:您的isNew()
策略是这里的罪魁祸首。由于您已将条件设置为id != null
。每次创建 SampleBean 时,都不会根据您的代码 sn-p 设置 id,isNew()
方法将返回为 false,因此框架只会设置 LastModifiedDate。要么将 isNew()
方法条件更改为 return id == null;
,要么不实现 Persistable 接口,无论选择 isNew 的默认策略。
【讨论】:
以上是关于Spring Data 填充 @LastModifiedDate 而非 @CreatedDate的主要内容,如果未能解决你的问题,请参考以下文章
使用Spring-Data-JPA进行Spring启动:每次请求时都会填充ArrayList / JSON对象
Spring Boot Data JPA @CreatedBy 和 @UpdatedBy 未填充使用 OIDC 进行身份验证
带有 H2 和 data.sql 的 Spring Boot Data JPA - 未找到表