我有以下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;
    }
}

仓库接口(interface):
@Repository
public interface SampleBeanRepository extends MongoRepository<SampleBean, String> {
}

休息 Controller :
@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()策略是这里的元凶。由于您已将condition设置为id != null。每次创建SampleBean时,都不会按照您的代码片段设置id,isNew()方法将返回false,因此框架仅会设置LastModifiedDate。要么将isNew()方法条件更改为return id == null;,要么不执行Persistable接口(interface),无论isNew的默认策略是什么。

关于java - Spring数据填充@LastModifiedDate而不是@CreatedDate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45015225/

10-12 19:47