【问题标题】:How To Update multi rows once in spring JPA?如何在春季 JPA 中更新多行一次?
【发布时间】:2021-08-12 21:28:36
【问题描述】:

我使用 ICsvBeanReader 读取 CSV 文件。 那么,如果它的 id 是新的,那么在不创建新记录的情况下更新从数据库中的 CSV 文件读取的行的最佳解决方法是什么? 我不能用

saveAll(Iterable)

因为如果没有找到它,它会创建一个新记录。

例子

    private Long id;
    private int quantity;
    private String name;

CSV 文件

id,quantity,name
1,30,name1
2,30,name2
20,30,name3
...

请注意:- 表中未找到第 20 行,因此请在更新时忽略它。

【问题讨论】:

    标签: java mysql spring jpa


    【解决方案1】:

    JPA 没有 API 仅在实体存在时更新实体,您可以执行 merge(),如果实体存在则更新,但如果实体不存在,它也会创建一个新行。

    Hibernate 有一个 update() 方法,如果存在则更新一行,但如果该行不存在则失败。

    【讨论】:

      【解决方案2】:

      我通过一个简单的解决方法克服了这个问题。 获取所有表 id 并检查是否在表 id 列表中找到 CSV 行 id,因此将此行添加到新列表中,否则忽略此行。 最后将新列表发送到saveall(iterable) 方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-31
        • 2023-03-30
        • 2019-01-10
        • 1970-01-01
        • 1970-01-01
        • 2021-08-27
        • 1970-01-01
        • 2020-09-02
        相关资源
        最近更新 更多