【问题标题】:Spring Data fills @LastModifiedDate by not @CreatedDateSpring Data 填充 @LastModifiedDate 而非 @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);
    }
}

【问题讨论】:

    标签: java spring-boot spring-data spring-data-mongodb auditing


    【解决方案1】:

    您的isNew() 策略是这里的罪魁祸首。由于您已将条件设置为id != null。每次创建 SampleBean 时,都不会根据您的代码 sn-p 设置 id,isNew() 方法将返回为 false,因此框架只会设置 LastModifiedDate。要么将 isNew() 方法条件更改为 return id == null;,要么不实现 Persistable 接口,无论选择 isNew 的默认策略。

    【讨论】:

      猜你喜欢
      • 2019-01-13
      • 2021-08-18
      • 1970-01-01
      • 2021-01-15
      • 2017-08-10
      • 2016-06-19
      • 2016-11-06
      • 2021-07-17
      • 2019-10-25
      相关资源
      最近更新 更多