目的:通过给定的主键列表更新同一表的某些列并返回有序 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刷新,那么即使我们一个一个而不是批量更新,我们仍然看不到数据库变化吗?提前致谢