-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Description
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
:
Lines 463 to 467 in d1bd771
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.