目的:根据给定的主键列表更新同一张表中的某些列,并返回排序后的int[]以指示行更新是否成功。
查询(非本地):
update MyEntity e set e.col_1 = :v1, e.col_2 = :v2 where e.id in :ids
Spring Data JPA 方法:
@Modifying(clearAutomatically = true)
@Transactional
public int updateCols(@Param("v1") String v1, @Param("v2") String v2, @Param("ids") List<Long> idList);
Spring JpaTransactionManager被使用
问题:1)仅使用Spring Data JPA,如何做到?(由于大量现有代码,自定义存储库不是选项),我们想要实现与JDBC批量更新等效的效果。
2)是否可能Spring Data JPA将返回比输入列表大小更小的整数?如果发生这种情况,我们如何知道我的输入列表中哪个失败了?任何顺序都可以吗?
3)注意到上述方法成功完成后,数据库行根本没有被更新。如何使用Spring Data JPA强制它与数据库同步?
4)如果实体更新未被Spring Data JPA刷新,则即使我们逐个更新而不是批量更新,仍然无法看到数据库更改?
谢谢!