Please do a quick search on Github issues first, the feature you are about to request might have already been requested.
Expected Behavior
Make FlatFileItemReaderBuilder detect whether the target type is Kotlin data class and sets proper FieldSetMapper which is not BeanWrapperFieldSetMapper.
RecordFieldSetMapper works with a Kotlin data class but we might be better to introduce a new dedicated FieldSetMapper.
Current Behavior
The FlatFileItemReaderBuilder only detects whether the target type is record or not. So it sets the BeanWrapperFieldSetMapper which instantiates the target type by the default constructor (no-args) and causes NotWritablePropertyException:
|
if (this.targetType != null && this.targetType.isRecord()) { |
|
RecordFieldSetMapper<T> mapper = new RecordFieldSetMapper<>(this.targetType); |
|
lineMapper.setFieldSetMapper(mapper); |
|
} |
|
else { |
Context
As a workaround, we might make the data class fields nullable and mutable like:
data class Player(var lastName: String? = null)
but as you know, it doesn't leverage the Kotlin's features.
Please do a quick search on Github issues first, the feature you are about to request might have already been requested.
Expected Behavior
Make
FlatFileItemReaderBuilderdetect whether the target type is Kotlin data class and sets properFieldSetMapperwhich is notBeanWrapperFieldSetMapper.RecordFieldSetMapperworks with a Kotlin data class but we might be better to introduce a new dedicatedFieldSetMapper.Current Behavior
The
FlatFileItemReaderBuilderonly detects whether the target type is record or not. So it sets theBeanWrapperFieldSetMapperwhich instantiates the target type by the default constructor (no-args) and causesNotWritablePropertyException:spring-batch/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java
Lines 463 to 467 in d1bd771
Context
As a workaround, we might make the data class fields nullable and mutable like:
but as you know, it doesn't leverage the Kotlin's features.