gpt4 book ai didi

Spring Boot 和 MongoDB - 如何保存日期

转载 作者:可可西里 更新时间:2023-11-01 10:21:20 26 4
gpt4 key购买 nike

我已经按照 Spring.io 指南使用 rest 访问 MongoDB 数据 (https://spring.io/guides/gs/accessing-mongodb-data-rest/),并且可以将文档保存到 mongo 中。

当我尝试将日期字段添加到 POJO 并将日期设置为 new Date() 对象时,它在保存到 mongo 时只是将值保存为 null。

我创建了一个非常基本的@RestController,它运行良好(传入请求正文,并使用我的MongoRepository 类将其保存下来),通过以下方式保存文档其余控制台。我尝试在此处创建一个新日期并在将其保存到 Mongo 之前进行设置,但这给了我类似 "createdDate": 1472394366324 的信息。

我可以将日期作为字符串保存到 Mongo 中,但我想要的是能够以日期格式保存日期,这样我就可以使用基本的“日期之间”查询来查询它们(就像这样,确切的格式无关紧要 - “date”:ISODate(“2014-02-10T10:50:42.389Z”)。我可以编写查询以通过参数获取值,但要获取“日期”在查询工作之间我需要能够将日期值存储到 Mongo 中。

完成此任务的最简单方法是什么?

编辑:

Pojo 类 -

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

@Document(collection = "Musicians")
public class Musician {

@Id
private String id;

private String firstName;
private String lastName;

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private Date createdDate = new Date();

public Musician() {}

public Musician(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
//createdDate = new Date();
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getId() {
return id;
}

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

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public Date getCreatedDate() {
return createdDate;
}

public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
}

RestController 类 -

@RestController
@RequestMapping(value = "/musicians")
public class MusicianController {

@Autowired
MusicianRepository musicianRepository;

@Autowired
MongoTemplate mongoTemplate;

@RequestMapping(method = RequestMethod.POST, value = "")
public ResponseEntity<HttpStatus> createMusician(@RequestBody Musician musician) {
Musician musicianIn = musician;

musicianRepository.save(musicianIn);

return new ResponseEntity(HttpStatus.ACCEPTED);
}

@RequestMapping(method = RequestMethod.GET, value = "")
public ResponseEntity<List<Musician>> getMusicians() {
List<Musician> musicians = musicianRepository.findAll();

return new ResponseEntity<List<Musician>>(musicians, HttpStatus.OK);
}
}

最佳答案

使用创建/修改日期的最常见方式是通过注释 @CreatedDate/@ModifiedDate。要启用它,您必须在 @Configuration 旁边的某处(或在主应用程序文件中)使用 @EnableAuditing 注释。如果你喜欢更少的注释,你可以只使用 java8 LocalDateTime 类。

关于Spring Boot 和 MongoDB - 如何保存日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39192806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com