Я новичок в Spring, мое приложение, разработанное Spring Spring, имеет Cron, который каждый день загружает некоторые файлы и обновляет базу данных.Двойные экземпляры в базе данных после использования EntityManager.merge() в методе переходных процессов
Обновление выполняется после загрузки и разбора файлов, используя слияния(), класса сущностей Dataset имеет список под названием ресурсов, после загрузки я делаю:
dataset.setResources(resources);
dataset.merge();
и dataset.merge() выполняет следующие действия:
@Transactional
public Dataset Dataset.merge() {
if (this.entityManager == null) this.entityManager = entityManager();
Dataset merged = this.entityManager.merge(this);
this.entityManager.flush();
return merged;
}
Я ожидаю, что сделаю dataset.setResources (resources); Я бы перезаписал поданные ресурсы, и поэтому даже запись в базе данных была бы перезаписана.
Но я получаю двойные записи в базе данных: каждый ресурс появляется дважды, с разными идентификаторами (инкрементный).
Как я могу добиться, чтобы мое приложение выполняло обновления и не вставляло их? Наивное решение было бы удалить вручную старый ресурс, а затем вызвать merge(); это способ или есть еще более умное решение?