Сам метод сохранения ведет себя как saveorUpdate, поэтому проблема здесь в вашем коде.
То, что вы делаете, это только устанавливаете значения некоторых значений, а не другие значения.Поэтому, когда вы отправляете частичную JSON для Spring, он устанавливает другие значения в их значения по умолчанию.Теперь проблема здесь, нулевое допустимое значение в базе данных.Таким образом, CrudRepository обновляет все значения вместе с нулевым значением, так как считает, что вы хотите обновить базу данных со значениями в объекте.Рассмотрим ваш сценарий здесь:
Json, отправленный в Spring: {"id":2,"firstName": "Rubens","lastName": "Barichello"}
Объект, сгенерированный Spring:
private long id=2;
private String firstName="Rubens";
private String lastName="Barichello";
private String email=null;
private boolean enabled=false;
private String password=null;
private String memberLanguageCode=null;
private String activationToken=null;
private LocalDateTime activationTokenExpDate=null;
Итак, вам нужно получить объект с помощью findById(ID id), установите значения и затем вызовите метод сохранения (S-сущность).
Например.
memberfromspring;
memberforupdate= memberRepository.findById(memberfromspring.getId());
memberforupdate.setFirstName(memberfromspring.getFirstName());
memberforupdate.setLastName(memberfromspring.getLastName());
memberRepository.save(memberForUpdate);