1-й у вас есть путаница в именах: у вас есть Driver
& Drivers
.Например:
private Drivers driver;
Выбор имен переменных, например:
BookedBuses bookedRecord = new BookedBuses();
, может привести к путанице.Не смешивайте множественное число и единственное число между типами и, предпочтительно, также не вводите имена, которые не могут быть легко связаны, как записьТакже это:
private List<BookedBuses> bookedBus;
, что скорее должно быть похоже на:
private List<BookedBus> bookedBuses;
(а также потребуется изменить имя вашего класса BookedBuses -> BookedBus)
В любом случаеЗдесь, похоже, реальная проблема:
Drivers drivers = new Drivers(booking.getDriver().getId());
Вам нужно извлечь существующую сущность по идентификатору с помощью репозитория, а не создавать новую с идентификатором существующего.Так что-то вроде:
Drivers drivers = driverRepo.findOne(booking.getDriver().getId()); // or findById(..)
Кажется, у вас есть конструктор (который вы не показали), который позволяет создать драйвер с идентификатором.То, что не удалось, считается отстраненным.(У вас также есть drivers.addBooked(bookedRecord);
, которым вы не поделились, но, возможно, это тривиально)
Обратите внимание также В некоторых сообщениях предлагается изменить CascadeType.ALL
на CascadeType.MERGE
, зависит ли это от вашей работынеобходимо.Данные Spring могут объединяться в save(..)
на основе идентификатора сущности, но не обязательно в этом случае.