Когда я запускаю метод GET Http localhost:8080/api/empl/drivers/id=1
, тогда я получаю json:
{
"pesel": "240028313144621540785598931",
"firstName": "Janusz",
"lastName": "Nosacz",
"login": "user2",
"email": "driver@example.com",
"isActive": null,
"userRole": "DRIVER",
"active": null,
"id": 1
}
Все нормально, но когда я хочу удалить идентификатор с помощью метода DELETE Http: localhost:8080/api/empl/drivers/id=1
, тогда я получаю ошибку: "could not execute statement; SQL [n/a]; constraint [\"FKDPOR9OHOV2F3OPTWE7TWE49TT: DBO.VEHICLE FOREIGN KEY(DRIVER_ID) REFERENCES DBO.DRIVER(ID) (1)\"; SQL statement:\ndelete from driver where id=? [23503-197]]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement",
То же самое происходит, когда я бегу:
Driver employee0 = new Driver("94112757255", "Janusz", "Nosacz");
employee0.setUser(user2);
driverRepo.save(employee0);
driverRepo.deleteById(1L);
Я думаю, это из-за транспортного средства, которое связано с водителем с id = 1. Ассоциация является однонаправленной.(Драйвер не связан с автомобилем).
@Entity
public class Vehicle {
// ...
@OneToOne(cascade=CascadeType.REFRESH)
private Driver driver;
// ...
}
// ...
Vehicle vehicle0 = new Vehicle("1FTEF27L2VND02190");
vehicle0.setDriver(employee0);
vehicleRepo.save(vehicle0);
И вот как я делаю удаление на драйвере:
@Service
public class DriverServiceImpl implements DriverService {
private final DriverRepo driverRepo;
// ...
@Override
public void deleteDriver(Long id) {
driverRepo.deleteById(id);
}
}
В связи с похожими проблемами, обнаруженными на stackoverflow.com Я пыталсяиспользовать cascade.ALL и orphonalremoval = true, но это не помогло.
Есть идеи, как это решить?Я думаю, что я должен удалить ссылки на водителя с id = 1 для транспортного средства, но это проблематично ...
Вот полный код приложения: https://github.com/woblak/deliverp