繁体   English   中英

saveOrUpdate在带有H2数据库的Spring Data中不起作用

[英]saveOrUpdate doesn't work in Spring Data with H2 database

我的程序中有for循环,将新对象保存到数据库中。 看起来像

for (String value: readvalue.readValue()) {
            Value value= getValueForSomething(something);
            System.out.println(value);
            valueRepository.save(value);
        }

该代码段每30秒执行一次,并将所有值保存到数据库中。 数据库中的某些值具有两个相同的字段,另一个字段。 如何在h2数据库中更新值,而不是插入new?

我建议您在for循环中,创建一个方法来检查该对象,方法是使用诸如ID的唯一标识符查询该对象是否已存在于H2 DB中。 使用以下示例RDB查询作为参考:

    private static final String PRODUCT_ALREADY_EXISTS_QUERY = "SELECT EXISTS(SELECT 1"
        + " FROM inventory.products "
        + " WHERE 1 = 1"
        + " AND id = :id)";

然后,如果记录确实存在,则调用更新方法,该方法利用查询使用唯一标识符进行UPDATE。 RDB示例查询为:

    private static final String UPDATE_QUERY = "UPDATE inventory.products"
        + " SET (company_id, name, price, type, quantity, created_date, last_modified_date) = "
        + " (:companyId, :productName, :price, :productType, :quantity, :createdDate, :lastModifiedDateTime)"
        + " WHERE id = :id ";

如果记录不存在,则像您一样创建记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM