小编joh*_*ohn的帖子

Spring数据JPA更新多行

目的:通过给定的主键列表更新同一表的某些列并返回有序 int[] 以指示行更新是否成功

查询(非本地):

update MyEntity e set e.col_1 = :v1, e.col_2 = :v2 where e.id in :ids
Run Code Online (Sandbox Code Playgroud)

Spring Data JPA 方法:

@Modifying(clearAutomatically = true)
@Transactional
public int updateCols(@Param("v1") String v1, @Param("v2") String v2, @Param("ids") List<Long> idList);
Run Code Online (Sandbox Code Playgroud)

使用 Spring JpaTransactionManager

问题:1) 仅使用 Spring Data JPA,如何做到这一点?(由于现有代码量大,自定义repository不可选),我们只想用Spring数据JPA实现相当于JDBC批量更新的效果。

2) spring data JAP 是否有可能通过上面的更新方法返回一个小于输入列表大小的整数?如果这可能发生,我们怎么知道我的输入列表中的哪一个失败了?以任何顺序?

3)注意到上述方法成功完成后,数据库行根本没有更新。我们如何强制它与带有 spring 数据 jpa 的数据库同步?

4)如果实体更新没有被spring数据JPA刷新,那么即使我们一个一个而不是批量更新,我们仍然看不到数据库变化吗?提前致谢

java spring hibernate jpa

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

spring ×1