Я хочу написать @Scheduled
метод, который должен производить некоторые операции с БД. Короче говоря, он должен обновлять данные в таблице (добавлять новые записи, перезаписывать существующие и удалять неиспользуемые. Сущность определяется полем name
). После первой попытки я получил что-то вроде LazyInitializationException: No Proxy
. Метод Annotate @Scheduled
с аннотацией @Transactional
мне немного помог, но теперь у меня другая проблема: перезапись данных выглядит так:
Set<String> names = items.stream().map(Item::getName).collect(Collectors.toSet());
myService.deleteByName(names); //delete and save instead update
myService.save(items);
Но теперь я получаю ConstraintViolationException
, потому что на нем есть уникальный ключ столбцы name
и myService.deleteByName(names)
не действуют (я думаю, это потому, что этот метод вызывается из метода @Transactional
).
Скажите, пожалуйста, что я делаю не так