【发布时间】:2018-02-11 14:06:03
【问题描述】:
我在更新我的实体时遇到问题。我已经休息了 api,我使用请求映射“/people/{id}”和 PUT 方法。如果我提出请求,我会收到这样的错误 ->“写入失败,错误代码 11000 和错误消息 'E11000 重复密钥错误集合:...”
问题出在哪里?我使用 mongo 数据库。代码如下:
@PutMapping("/people/{id}")
public ResponseEntity<Person> updatePerson(@PathVariable String id,
@Valid @RequestBody Person person) {
Optional<Person> personToUpdate =
Optional.ofNullable(this.personRepository.findOne(id));
if(!personToUpdate.isPresent()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
if(personToUpdate.get().getName() != null) {
personToUpdate.get().setName(person.getName());
}
if(personToUpdate.get().getSurname() != null) {
personToUpdate.get().setSurname(person.getSurname());
}
if(personToUpdate.get().getBirthDate() != null) {
personToUpdate.get().setBirthDate(person.getBirthDate());
}
if(personToUpdate.get().getDateOfDeath() != null) {
personToUpdate.get().setDateOfDeath(person.getDateOfDeath());
}
if(personToUpdate.get().getGraveId() != null) {
personToUpdate.get().setGraveId(person.getGraveId());
}
Person updatedPerson = this.personRepository.insert(personToUpdate.get());
return new ResponseEntity<>(updatedPerson, HttpStatus.OK);
}
【问题讨论】: