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

时间:2019-01-25 16:10:38

标签: java hibernate spring-boot spring-data h2

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

http://marubon-ds.blogspot.com/2017/09/knn-k-nearest-neighbors-by-tensorflow.html

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

1 个答案:

答案 0 :(得分:1)

我建议您在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 ";

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