我有一个spring项目,我正在使用Hibernate和JpaRepository。现在我想同时对许多记录进行更新,我有一个id地图和一个要更新的字段。记录量是可变的,因为它取决于请求。这不是真正的ORM级别,而是较低级别。我该怎么办呢?我是Spring和Hibernate的新手,所以,我不知道应该用哪个API来解决这个问题。
我将数据作为Map<UUID, Integer>
获取,我想将其转换为一组查询值,如下所示:Update multiple rows in same query using PostgreSQL。基本上我正在进行批量更新。
答案 0 :(得分:1)
过去我遇到过类似的情况,我不明白为什么不混合jpa和jdbc技术,这些技术确实是为这类任务而设计的。甚至还为您配置了jdbc模板&#34; free&#34;如果您使用spring boot
并添加spring-boot-starter-jdbc
依赖项,例如(来自春天documentation)
public class JdbcActorDao implements ActorDao {
private final JdbcTemplate jdbcTemplate;
public int[] batchUpdate(final List<Actor> actors) {
return this.jdbcTemplate.batchUpdate(
"update t_actor set first_name = ?, last_name = ? where id = ?",
new BatchPreparedStatementSetter() {
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setString(1, actors.get(i).getFirstName());
ps.setString(2, actors.get(i).getLastName());
ps.setLong(3, actors.get(i).getId().longValue());
}
public int getBatchSize() {
return actors.size();
}
});
}
}