【发布时间】:2023-01-10 01:07:40
【问题描述】:
使用 QueryDsl 和 JPA,我需要为实体列表更新同一列并将修改存储在数据库中,之间是否存在差异(性能术语):
1 - 通过获取所有 ID 并执行同时更新所有行的单个查询来实现。
2 - 使用 entityManager 将更新后的实体一一合并。
1.
public List<Car> updateProcessedForCarList( List<Car> CarList, boolean processed) {
List<Long> ids = CarList.stream().map(v -> v.getId()).collect(Collectors.toList()):
getQuery().update(CAR_TABLE).set(CAR_TABLE.processed, processed)
.where(CAR_TABLE.id.in(ids)).execute();
}
2.
public List<Car> updateProcessedForCarList( List<Car> CarList, boolean processed) {
CarList.stream().forEach(car -> {
car.setProcessed(processed);
getEntityManager().merge(car);
});
return vsCmdbUpdateInfoBEList;
}
【问题讨论】: