我正在使用Spring Batch 3.0.8并在尝试使用org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper
来摄取CSV数据时遇到问题配置文件如下所示:
Sub fixData() Dim writeRow As Integer writeRow = 1 'Iterate through Sheet1 starting at row 9 and ending at 5000 'Skipping every 3 rows For i = 11 To 5000 Step 3 'Pick up the streetname from Sheet1 and stick it in Sheet2 Sheet2.Cells(writeRow, 1).Value = Sheet1.Cells(i + 1, 1).Value 'Streetname Sheet2.Cells(writeRow, 2).Value = Sheet1.Cells(i + 1, 2).Value 'Building No Sheet2.Cells(writeRow, 3).Value = Sheet1.Cells(i + 1, 2).Value 'Daire No Sheet2.Cells(writeRow, 4).Value = Sheet1.Cells(i, 3).Value 'Name Sheet2.Cells(writeRow, 5).Value = Sheet1.Cells(i + 2, 3).Value 'Surname Sheet2.Cells(writeRow, 6).Value = Sheet1.Cells(i, 5).Value 'Gender Sheet2.Cells(writeRow, 7).Value = Sheet1.Cells(i, 6).Value 'Baba Sheet2.Cells(writeRow, 8).Value = Sheet1.Cells(i + 2, 6).Value 'Anne Sheet2.Cells(writeRow, 9).Value = Sheet1.Cells(i, 7).Value 'il Sheet2.Cells(writeRow, 10).Value = Sheet1.Cells(i + 2, 7).Value 'ilce '... like 10 more of these 'Now we've written out one row to sheet2, increment to the next one writeRow = writeRow + 1 Next End Sub
<bean id="BMSDataItemReaderCSV" scope="step" class="org.springframework.batch.item.file.FlatFileItemReader">
BMSContract类有一个有问题的字段定义如下:
private java.sql.Date REFRESH_TMS;
数据文件具有以下CSV输入:
PROJ_TYP_CD,... '06 -05-2018T01:02:08Z'
以下是我收到的错误消息:
引起:org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult:3个错误 字段'REFRESH_TMS'上对象'target'中的字段错误:被拒绝的值 [];代码 [typeMismatch.target.REFRESH_TMS,typeMismatch.REFRESH_TMS,typeMismatch.java.sql.Date,typeMismatch]; 参数 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码[target.REFRESH_TMS,REFRESH_TMS];参数[];默认消息 [REFRESH_TMS]];默认消息[无法转换属性值 输入'java.lang.String'到属性所需的类型'java.sql.Date' 'REFRESH_TMS';嵌套异常是java.lang.IllegalStateException: 无法将'java.lang.String'类型的值转换为所需类型 属性'REFRESH_TMS'的'java.sql.Date':没有匹配的编辑器或 发现转换策略]