Обновление данных в таблице БД, если связь многие-ко-многим через связочную таблицу. Hibernate

Подскажите пожалуйста такую штуку:

Я пытаюсь сделать обновление существующей записи в таблице (связь многие-ко-многим) используя Spring Data но натыкаюсь на ошибку ConstraintKeyViolation.

Описание проблемы:

У меня есть таблица Практики она ссылается на таблицу Локации через промежуточную таблицу Практис_Локейшины. В этой таблице всего 2 поля: практис_id (указывает на йдихи в таблице Пракики) и локейшин_id (указывает на айдихи в таблице Локейшины). Когда я пытаюсь добавить новую локацию в существующую практику то получаю ошибку ConstraintKeyViolation. Помогите разобраться что делаю не так. Я просто новичек в работе со спринг дата.

Код:

Practice.java

 @ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.REFRESH })
    @JoinTable(name = "practice_locations",
            joinColumns = { @JoinColumn(name = "practice_id", referencedColumnName = "id") },
            inverseJoinColumns = { @JoinColumn(name = "location_id", referencedColumnName = "id") })
 private Set<Location> locations = new HashSet<>();

Location.java

@ManyToMany(mappedBy = "locations", fetch = FetchType.LAZY)
private List<Practice> practices;

Service.java

@PutMapping("/{practiceId}/add-location")
 public ResponseEntity<?> addNewLocation(
            @PathVariable final Long practiceId,
            @RequestBody final LocationRequest locationRequest) {

        final Practice foundPractice = practiceRepository.getById(practiceId)
                .orElseThrow(() -> new PracticeNotFoundException("Requested practice was not found!"));

        final Location newPracticeLocation = Location.builder()
                .city(locationRequest.getCity())
                .zipCode(locationRequest.getZipCode())
                .street(locationRequest.getStreet())
                .streetNumber(locationRequest.getStreetNumber())
                .streetSubNumber(locationRequest.getStreetSubNumber())
                .officeNumber(locationRequest.getOfficeNumber())
                .phoneNumber(locationRequest.getPhoneNumber())
                .status(Status.ACTIVE)
                .build();
        locationRepository.save(newPracticeLocation);

        final Set<Location> existingPracticeLocations = foundPractice.getLocations();
        existingPracticeLocations.add(newPracticeLocation);

        foundPractice.toBuilder().locations(existingPracticeLocations);
        practiceRepository.save(foundPractice);

        return new ResponseEntity<>(
                new ApiResponse(true, "New Location has been added successfully!"),
                HttpStatus.OK);
    }

Ошибка: org.postgresql.util.PSQLException: ERROR: insert or update on table "practice_locations" violates foreign key constraint "fk_location_practice_practice" Detail: Key (location_id)=(5) is not present in table "practices".


Ответы (0 шт):