Spring boot + batch:JpaItemWriter不会更新

时间:2015-02-07 13:07:55

标签: java spring hibernate batch-file spring-boot

我有一个使用批处理的spring-boot项目。读取工作正常(我从CSV文件中读取)并且映射到我的POJO也可以工作(也插入到数据库中,但不是更新...)。

但问题出现了: 我使用JpaItemWriter和具有自动生成ID(long值)的实体。当我没有在Bean中设置Id时,它将是一个带有下一个值的插入(这样就可以了)。

但问题是,有时我不需要插入,而是需要更新。当我将Id设置为与数据库中的现有条目相同的Id(H2 - 保存到文件中)时,它会生成另一个Insert,或者我发现主键违规。

我还在Entity类中尝试了@DynamicUpdate(true)@SelectBeforeUpdate(true),但它不起作用。 长Id键也有@Id声明。

如何在PersistenceContext

中强制更新或加载数据库

ItemReader读取POJO,MyProcessor将POJO转换为Bean(其中包含更多字段,仅在数据库中,而不在CSV文件中)并返回{{1}如果没有做任何事情或Bean(没有Id设置=插入,或者旧的Id =我希望是更新)。

nullequals()方法仅指ID。

1 个答案:

答案 0 :(得分:0)

解决方案:我必须从DB / Repo本身返回Item(Bean),而不是具有相同Id的新创建的。

然后我得到更新。