Jpa не обновляет данные - PullRequest
       4

Jpa не обновляет данные

0 голосов
/ 07 февраля 2020

У меня есть метод в Controller:

 @RequestMapping(value = "/children", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public void createChild(@RequestBody CreateChildRequestDTO childDTO) {
        Long guardianId = Long.parseLong(childDTO.getGuardianId());
        Child child = childDTO.getChild();
        Guardian guardian = guardianService.findById(guardianId).get();
        boolean isExist = childService.isExist(child.getChildFullName(),
                child.getPassword(),
                child.getPhoneNumber());
        if (isExist) {
            child = childService.findChildByNameAndPass(child.getChildFullName(), child.getPassword());
            guardian.addChild(child);
        }
        else {
            guardian.addChild(child);
            childService.createChild(child);
        }
    }

А также я создал отношение многие ко многим в Guradian классе:

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "guardian_child", schema = "cheer",
        joinColumns = @JoinColumn(name = "guardianid"),
        inverseJoinColumns = @JoinColumn(name = "childid"))
private List<Child> children = new ArrayList<>();

Когда я запустить код и выполнить строку guardian.addChild(child) дочерний элемент добавлен в список опекунов, но не создал новую запись в таблице. Как это исправить? Зафиксировать изменение в отношении объектов?

1 Ответ

2 голосов
/ 07 февраля 2020

Как предложил @Jens в комментарии, вы никогда не сохраняете изменения в базе данных.

Существует два способа решения этой проблемы:

  1. Вы можете запустить код в транзакции, тогда hibernate позаботится о грязной проверке и зафиксирует все изменения родительского объекта в базе данных.
  2. Вы можете сохранить guardian, вызвав что-то подобное в конце метод:

    guardianService.save(guardian);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...