ClassifierCompositeItemWriter с AsyncItemWriter?

В настоящее время я использую AsyncItemWriter для записи обработанных данных студента в мою таблицу базы данных. Недавно я получил требование записывать в несколько таблиц базы данных на основе критериев (если студент на последнем курсе, также запишите в отдельную таблицу с дополнительными данными).

В настоящее время у меня определены два отдельно работающих компонента AsyncItemWriter. Пробовал использовать CompositeItemWriter, который действительно работает и использует оба делегата для записи в соответствующие таблицы. Теперь я хочу вызвать второго писателя, только если вышеупомянутое условие выполнено.

Я попытался использовать ClassifierCompositeItemWriter с настраиваемой реализацией Classifier для моего класса Student, который должен возвращать CompositeItemWriter, когда студент в прошлогодних критериях удовлетворен, иначе вызывает единственный AsyncItemWriter для хранения данных студента. К сожалению, когда в ClassifierCompositeItemWriter "swrite()вызывается метод, элементы внутри списка записи относятся к типу FutureTask и наclassify()вызвать писателя не удается с ClassCastException, так как он не может передать FutureTask в мою модель Student.

К сожалению, в настоящее время у меня нет кода под рукой, но я постарался быть максимально подробным.

1 ответ

Я попытался использовать ClassifierCompositeItemWriter с настраиваемой реализацией Classifier для моего класса Student, который должен возвращать CompositeItemWriter, когда студент в прошлогодних критериях удовлетворен, иначе вызывает единственный AsyncItemWriter для хранения данных студента

Это начинает усложняться без реальной пользы. Я хотел бы сделать это простым и использовать настраиваемый писатель с "если" внутри реализации, соответствующейif the student is in their last year, also write in a separate table with additional data.

Другие вопросы по тегам