Spring批处理为下一次插入获取自动生成的Id

Spring批处理为下一次插入获取自动生成的Id,spring,spring-batch,Spring,Spring Batch,我正在编写一个spring批处理应用程序,并且有一个输入csv文件,该文件有多行,其中有唯一的人名和电话号码。在csv中,我保证人与电话号码是一对一关系,但我希望将这些号码插入数据库,其中人与电话之间存在一对多关系 我知道如何逐个插入,但在插入手机时,我希望获得插入人时自动生成的id,以创建一对多关系 我不确定这样做的最佳方式,除非我编写一个自定义处理器,向后端发送http请求,或者直接访问数据库来创建person,然后使用writer创建电话号码条目。能够通过在SQL中的第一个insert周围

我正在编写一个spring批处理应用程序,并且有一个输入csv文件,该文件有多行,其中有唯一的人名和电话号码。在csv中,我保证人与电话号码是一对一关系,但我希望将这些号码插入数据库,其中人与电话之间存在一对多关系

我知道如何逐个插入,但在插入手机时,我希望获得插入人时自动生成的id,以创建一对多关系


我不确定这样做的最佳方式,除非我编写一个自定义处理器,向后端发送http请求,或者直接访问数据库来创建person,然后使用writer创建电话号码条目。

能够通过在SQL中的第一个insert周围使用WITH语句来实现这一点,然后使用该临时结果来返回id。然后使用insert into select from在另一个表上进行第二次插入。为第二个insert指定id变量,然后为其他列值指定“consts”


这是否回答了您的问题?不完全是这样,如果我在处理器中使用它,我可能就是这样做的,但我不认为这是最佳方式。我认为有更好的方法可以做到这一点。定义“更好”的代码并编写一堆锅炉板代码来连接数据库。我想有一种方法可以像基本插入一样使用spring批处理将其绑定起来,但需要更多的逻辑。好吧,您可以简单地使用RDBMS提供的方法来获取最后一个插入id,并将其合并到您的
INPUT
语句中。问题是,在插入第一个电话号码后,它将不再返回个人id