Ich habe den Spring.io Leitfaden für den Zugriff auf MongoDB Daten mit Rest (https://spring.io/guides/gs/accessing-mongodb-data-rest/) gefolgt und kann Dokumente in Mongo speichern.Spring Boot und MongoDB - wie man das Datum speichert
Wenn ich versuche, dem POJO ein Datumsfeld hinzuzufügen und das Datum als new Date()
-Objekt festzulegen, speichert es den Wert einfach als null, wenn es in Mongo gespeichert wird.
Ich habe eine sehr einfache @RestController
erstellt, die gut funktioniert (übergibt die Anfrage Körper, und speichert es mit meiner MongoRepository
Klasse), Speichern von Dokumenten über die Rest-Konsole. Ich habe versucht, ein neues Datum hier zu erstellen und es vor dem Speichern auf Mongo zu setzen, aber das gibt mir so etwas wie "createdDate": 1472394366324
.
Ich kann Daten als Zeichenfolge in Mongo speichern, aber was ich will, ist in der Lage, Daten im Datumsformat zu speichern, so dass ich sie mit einer grundlegenden 'Datum zwischen' Abfrage abfragen kann (so etwas wie das genaue format spielt keine große Rolle - "date" : ISODate("2014-02-10T10:50:42.389Z")
Ich kann die Abfragen schreiben, um Werte über Parameter zu erhalten, aber um die "Datum zwischen" -Abfrage funktioniert zu bekommen, muss ich in der Lage sein, Datumswerte in Mongo zu speichern.
Was ist das einfachste? Weg dies zu tun
Edit:?
Pojo Klasse -
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;
}
}
Die RestController Klasse -
@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);
}
}
Sie können versuchen, die Annotation '@ CreatedDate' zum Attribut Ihres POJO hinzuzufügen, zum Beispiel: class MyObject {@CreatedDate Date date; } – ypriverol
das scheint nichts zu ändern. Ich habe die Annotation hinzugefügt, und wenn ich meinem createdDate-Feld ein neues Date() -Zeichen gebe, ist es in mongo null, und wenn ich den Setzer im Rest-Endpunkt vor dem Speichern nach Mongo anrufe, gibt er mir eine Nummer wie die obige. Soll ich etwas anderes machen, damit es funktioniert? Warum erstellt das Festlegen eines Datums im Pojo-Konstruktor einen Nullwert? – spicybanjo