У меня есть две сущности, чтобы упростить, сказали Департамент и Сотрудник, Департамент и Сотрудник имеют однонаправленное отношение «многие ко многим», где Департамент имеет свойство employees
, но Сотрудник не может перейти к отделам.
Затем, чтобы удалить Сотрудника, я вызываю deleteById(employeeId)
или delete(employee)
из EmployeeRepository (который расширяет CrudRepository из Spring Data JPA)
Этот вызов вызовет JdbcSQLIntegrityConstraintViolationException , поскольку он не удаляет сначала ассоциацию в таблице присоединения Department_Employee . Увольнение Сотрудника должно сопровождаться удалением во всех его ассоциациях с его отделами.
Что является хорошим способом для достижения этой цели?
У меня возникла одна идея:
Используйте @Modifying
с @Query
, чтобы переопределить метод delete
из CrudRepository.
Но Spring Data JPA, похоже, не поддерживает последовательный запуск нескольких запросов в аннотации @Query
, я не знаю, как сначала удалить все ассоциации, а затем удалить сотрудника в одном запросе JPQL.
Пожалуйста, поделитесь своими идеями или практиками, большое спасибо!