【问题标题】:Best way to update a list of entities with QueryDsl and JPA使用 QueryDsl 和 JPA 更新实体列表的最佳方式
【发布时间】: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;
    }

【问题讨论】:

    标签: java jpa querydsl


    【解决方案1】:

    这取决于:

    选项 1 快得多,但如果您有任何应该执行的逻辑或侦听器,则会被绕过。此外,您无法继续处理汽车列表,因为它们的状态与数据库不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2019-11-05
      • 2012-01-08
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多