У меня есть запланированный метод в весенней заявке. В этом методе я пытаюсь удалить сущность с помощью uuid, и эта операция выполняется долго. Когда я пытаюсь перезапустить приложение, я вижу, что запрос все еще выполняется (после того, как приложение остановлено), и когда приложение пытается запустить снова, мои сценарии миграции liquibase (например, создать индекс, если не существует в этой таблице) не могут быть выполнены ( находятся в состоянии зависания).
В чем дело? Как я могу остановить выполнение запроса при остановке приложения? Чтобы перезапустить приложение, я перезапускаю сервер postgresql db (это не то, что я хочу).
@Component
public class CleanMyEntitiesJob {
@Autowired
private MyEntityService myEntityService;
@Scheduled(fixedDelay = 10000)
public void clean() {
List<String> entitiesToDelete = myEntityService.getEntitiesToDelete();
if (CollectionUtils.isNotEmpty(entitiesToDelete)) {
entitiesToDelete.stream().forEach(uuid -> {
cameraService.delete(uuid);
});
}
}
}
@Service
public class MyEntityServiceImpl implements MyEntityService {
@Autowired
private MyEntityRepository myEntityRepository;
@Override
public void delete(String uuid) {
myEntityRepository.delete(uuid);
}
@Override
public void getEntitiesToDelete(String uuid) {
....
}
}
@Service
public class MyEntityRepository implements extends JpaRepository<MyEntity, String> {
@Modifying
@Query("DELETE FROM MyEntity WHERE uuid = ?1")
void clean(String uuid);
}