![](/img/trans.png)
[英]Spring Boot in memory database H2 doesn't load data from file on initialization
[英]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.