我有一個使用批處理的spring-boot項目。閱讀工作正常(我從CSV文件中讀取),並映射到我的POJO也可以(也插入數據庫,但不更新...)。春季引導+批處理:JpaItemWriter不更新
但問題來了: 我使用JpaItemWriter
和一個帶有自動生成ID(long
值)的實體。當我沒有在Bean中設置該Id時,它將是具有下一個值的插入(這應該像它應該那樣工作)。
但問題是,有時我不需要插入,而是更新。當我將Id設置爲與數據庫中現有條目相同的Id(H2 - 保存到文件)時,它會使另一個Insert或我得到主鍵違例。
我也試過@DynamicUpdate(true)
和@SelectBeforeUpdate(true)
在Entity類,但它不起作用。 長Id鍵,也有@Id
聲明。
如何強制更新或在我PersistenceContext
加載數據庫?
而且ItemReader
讀取POJO,MyProcessor
轉換POJO到Bean(其中有更多的領域,那只是在DB而不是在CSV文件),並返回要麼null
如果沒有什麼是做或豆(或者沒有Id set = Insert,或者帶有舊的Id =,我希望這會是一個更新)。
equals()
和hashCode()
方法只是指Id。