Я делаю успокаивающее приложение в Spring boot, jpa, mysql. Я пометил некоторые из моих полей модели @NotBlank, чтобы вывести ошибку при создании объекта, если эти поля не заполнены.
Теперь, когда я обновляюсь, я не хочу получать эту ошибку, если я не установил некоторые поля в моем теле json. Моя цель - обновить только те поля, которые присутствуют.
Поэтому я хочу знать, есть ли способ не учитывать @NotBlank в моем методе обновления.
Это источник кода:
Для сущности
public class Note implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank(name)
private String title;
@NotBlank
private String content;
//Getters and Setters
}
Контроллер
@RestController
@RequestMapping("/api")
public class NoteController {
@Autowired
NoteRepository noteRepository;
// Create a new Note
@PostMapping("/notes")
public Note createNote(@Valid @RequestBody Note note) {
return noteRepository.save(note);
}
// Update a Note
@PutMapping("/notes/{id}")
public Note partialUpdateNote(@PathVariable(value = "id") Long noteId,
@RequestBody Note noteDetails) {
Note note = noteRepository.findById(noteId)
.orElseThrow(() -> new ResourceNotFoundException("Note", "id", noteId));
//copyNonNullProperties(noteDetails, note);
if(note.getTitle()!= null) {
note.setTitle(noteDetails.getTitle());
}else {
note.setTitle(note.getTitle());
}
if(note.getContent()!= null) {
note.setContent(noteDetails.getContent());
}else {
note.setContent(note.getContent());
}
Note updatedNote = noteRepository.save(note);
return updatedNote;
}
// Delete a Note
@DeleteMapping("/notes/{id}")
public ResponseEntity<?> deleteNote(@PathVariable(value = "id") Long noteId) {
Note note = noteRepository.findById(noteId)
.orElseThrow(() -> new ResourceNotFoundException("Note", "id", noteId));
noteRepository.delete(note);
return ResponseEntity.ok().build();
}
}
ResourceNotFoundException - класс, ответственный за выбросы ошибок.