Spring 数据填充@LastModifiedDate 而不是@CreatedDate
Spring Data fills @LastModifiedDate by not @CreatedDate
我有以下 Spring 引导示例应用程序。
疯狂的是,如果我在 SampleApplication bean 上添加 @EnableMongoAuditing
注释,lastModifiedDate
将由 createDate
填充,而不会。这是为什么?我在网上搜索了一下,很多人在更新期间清空createDate
时遇到问题,但我没有更新。
文档 class:
@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);
}
}
您的 isNew()
策略是这里的罪魁祸首。由于您已将条件设置为 id != null
。每次创建 SampleBean 时,都不会根据您的代码片段设置 id,isNew()
方法将 return 设置为 false,因此框架只会设置 LastModifiedDate。要么将 isNew()
方法条件更改为 return id == null;
,要么不实现 Persistable 接口,无论选择 isNew 的默认策略如何。
我有以下 Spring 引导示例应用程序。
疯狂的是,如果我在 SampleApplication bean 上添加 @EnableMongoAuditing
注释,lastModifiedDate
将由 createDate
填充,而不会。这是为什么?我在网上搜索了一下,很多人在更新期间清空createDate
时遇到问题,但我没有更新。
文档 class:
@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);
}
}
您的 isNew()
策略是这里的罪魁祸首。由于您已将条件设置为 id != null
。每次创建 SampleBean 时,都不会根据您的代码片段设置 id,isNew()
方法将 return 设置为 false,因此框架只会设置 LastModifiedDate。要么将 isNew()
方法条件更改为 return id == null;
,要么不实现 Persistable 接口,无论选择 isNew 的默认策略如何。