Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring batch Spring批处理:在写入期间检索行号_Spring Batch - Fatal编程技术网

Spring batch Spring批处理:在写入期间检索行号

Spring batch Spring批处理:在写入期间检索行号,spring-batch,Spring Batch,我正在读取一个文本文件并将数据写入数据库 我的问题是,有时当我试图将当前处理的行(从文件中)写入数据库时,我只能知道是否要跳过该行(例如,当我由于重复ID而收到SQL异常时,即,我尝试插入的行和数据库中已存在的某行具有相同的ID) 在这种情况下,我需要原始行号(用于日志记录)知道如何获得它吗? 我一直在看,但目前它似乎仍在开发中。那么呢?LineMapper(我的代码已经使用过)只处理作业的“读取”部分。即从字符串到模型对象。如果我想从“读取”返回模型对象和相应的行号,那么我必须定义一个新的类,

我正在读取一个文本文件并将数据写入数据库

我的问题是,有时当我试图将当前处理的行(从文件中)写入数据库时,我只能知道是否要跳过该行(例如,当我由于重复ID而收到SQL异常时,即,我尝试插入的行和数据库中已存在的某行具有相同的ID)

在这种情况下,我需要原始行号(用于日志记录)知道如何获得它吗?


我一直在看,但目前它似乎仍在开发中。

那么呢?
LineMapper
(我的代码已经使用过)只处理作业的“读取”部分。即从字符串到模型对象。如果我想从“读取”返回模型对象和相应的行号,那么我必须定义一个新的类,该类将从
LineMapper
返回:我的模型类的扩展或组合。这使一切变得复杂。如果有一种方法可以在tasklet级别保留行号,那么它将更加优雅,并且可以让我使用原始模型对象。编写器将获得一个项目列表,并且不能保证项目会像读取一样进入,因为itemReader可以跳过项目,或者itemProcessor可以过滤掉项目,所以行号应该在实体/模型中,否则skip/filter将不起作用。如果框架在整个tasklet中保留每个项目的行号(tasklet指的是单个项目的读进程写),那么skip&filter应该可以正常工作。如果没有,那么我可以理解为什么我应该更改模型类来保存这些数据。我在问框架中是否有什么东西可以在tasklet级别保留行号数据。我不知道您需要什么。问题是,这种方法也应该推广到不一定有“行号”或“记录号”的其他读卡器(DB、JMX、OXM等)。因此,您最好将域对象包装到另一个对象上,该对象也包含行号。