Мне было поручено перенести данные из "унаследованного" веб-приложения, которое использует данные JPA-источника, в более новую систему.Моими первоначальными мыслями было использование весенней партии.Я использую JpaPagingItemReader<LegacyEntity>
для чтения устаревших сущностей, пользовательский ItemProcessor<LegacyEntity, NewDataDto>
для преобразования сущностей и ItemWriter<NewDataDto>
для отправки данных через http rest call в новую систему.
Эти сущности имеютмного один ко многим ассоциациям.LegacyEntity имеет отношение один ко многим с entityA, которое имеет отношение oneToMany с entityB.
Моя проблема заключается в том, что JpaPagingItemReader управляется jpql.Я хочу, чтобы читатель вывел один из каждого LegacyEntity со всеми загруженными ассоциациями.Я рассмотрел использование выборочного соединения в jpql, но похоже, что он не поддерживает вложенные ассоциации и испускает дубликаты.
Какой лучший способ справиться с этим?Как бы я справился с этим, если бы использовал простой старый jdbc?
Считыватели и процессоры пакетной обработки Spring все сосредоточены на обработке по одной записи за раз, только с использованием подкачки изнутри, так как я обычно читаю объекты с ассоциациями toManyв партии?