Ваш код не работает так, как вы думаете.Для Spring это действительно что-то вроде этого:
- Взять новый объект Пользователь с id = 1, name = Ram ... и поместить его в эту базу.
- Возьмите новый объект Пользователь с id = 1, city = Mumbai ... и поместите его в эту базу.
Spring Repository работает так же, если вы сохраняете объект сИДЕНТИФИКАТОР, это добавит это.Если вы сохраните объект с заданным идентификатором, он обновит КАЖДОЕ значение, которое изменилось.Таким образом, для весны вы фактически обновляете каждое поле, некоторые для нового значения и большинство для NULL. ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Вы должны получить свой объект, возвращаемый функцией первого сохранения, и обновить его снова.Вот так:
@SpringBootApplication
public class JsontodbApplication implements CommandLineRunner {
@Autowired
private UserRepository userRepo;
public static void main(String[] args) {
SpringApplication.run(JsontodbApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
/* CREATE USER */
User user = userRepo.save(createUser(new User()));
/* UPDATE USER */
userRepo.save(updateUser(user));
System.out.println(userRepo.findOne(1));
}
public User createUser(User user) {
user.setName("Ram");
user.setCity("Delhi");
user.setEmail("abc@gmail.com");
user.setPhone("12345");
return user;
}
public User updateUser(User user) {
user.setCity("Mumbai");
user.setPhone("56789");
return user;
}
}