问题描述
我需要一次更新超过 1000-2000 笔交易的单列(状态)。要更新的值相同,例如所有行的“已处理”。我不想迭代我的列表并更新,而是在 jpa 本身中寻找批量更新。我还想避免显式使用实体管理器。
解决方法
使用标准的 Spring-boot JPA 可以使用类似的方法:
return new Promise(resolve => {
this.infos.map(info => {
info.members.map(member => {
member.contacts.map(contact => {
dataSource.push({
contact,member
});
});
});
});
this.dataSource = new MatTableDataSource(dataSource);
resolve();
});
测试代码:
public interface WidgetRepository extends CrudRepository<Widget,Long> {
@Override
List<Widget> findAll();
@Modifying(clearAutomatically = true,flushAutomatically = true)
@Query("update Widget w set w.status = :status where w in :widgets")
void setStatus(@Param("status") String status,@Param("widgets") List widgets);
}
它应该在一个事务中完成所有更新。