У меня есть два класса, которые имеют следующие элементы:
@Document(collection = "ClassP")
Class P{
@Id
private String p_id;
}
@Document(collection = "ClassR")
Class R{
@Id
private String r_id;
private String item;
@DBRef
private P p;
@DBRef
private User user;
}
Вот мой PR-репозиторий:
public interface PMongoRepository extends CrudRepository<P, String>{
P findPById(String p_id);
}
Что я собираюсь сделать, это обновить item
из класс R. Я получаю измененный предмет из внешнего интерфейса, и в контроллере у меня есть новый предмет. Таким образом, нет проблем со стороны переднего конца. В моем контроллере у меня есть следующий код:
@RequestMapping(value = "/editData", method = RequestMethod.POST, consumes = "application/json")
public ModelAndView editData(@RequestBody Map<String, String> new_items) {
ModelAndView modelAndView = new ModelAndView();
R copyOfExistingR= new R();
P pFound = pRepository.findPById(new_items.get("p_id"));
copyOfExistingR.setP(pFound);
copyOfExistingR.setItem(new_items.get("sep"));
copyOfExistingR.setUser(user);
rRepository.save(copyOfExistingR);
return modelAndView ;
}
Но код работает не так, как ожидалось. На rRepository.save(copyOfExistingR);
я получаю следующую ошибку:
Cannot create a reference to an object with a NULL id.
pFound
не равен нулю, и я могу распечатать его, но я не знаю, что я делаю неправильно с обновлением класса R , Буду благодарен, если кто-нибудь сможет мне помочь.