【问题标题】:How to get count of updated records in spring data jpa?如何获取春季数据 jpa 中更新记录的计数?
【发布时间】:2018-03-13 15:20:38
【问题描述】:

我正在使用带有 hibernate 的 spring data jpa 作为 jpa 持久性提供程序。

我在我的应用程序中使用本机查询。有一些更新查询,我想在执行更新查询时获得更新的实际记录数。 spring data jpa 中有没有办法做到这一点?

我目前正在遵循以下方法;

@Modifying
@Query(value="update table x set x_provision = ?1 where x_id = ?2", nativeQuery=true)
int updateProvision(Integer provision, Integer id);

@Transactional 被添加到服务层。

这里的问题是,当表格更新时,我得到的计数为 1。但在某些情况下,没有更新行。在这种情况下,我也将计数设为 1。但我希望收到更新的实际记录数,有时为 0。

如果我在这里做错了什么,有人可以告诉我吗?

【问题讨论】:

  • 非常感谢这方面的任何帮助。
  • @Thaos 你找到解决办法了吗。

标签: spring jpa native spring-data-jpa


【解决方案1】:

如果你看一下 ModifyingExecutor,它是用来执行这个查询的

@Override
protected Object doExecute(AbstractJpaQuery query, Object[] values) {
    int result = query.createQuery(values).executeUpdate();
    if (em != null) {
        em.clear();
    }
    return result;
}

然后你看,它只委托给原生 JPA 基础设施,返回更新元素的数量。

所以,这可能与使用的数据库或 ORM 框架配置有关,除此之外,您编写的查询应该返回正确的结果。

【讨论】:

  • 那不是 JpaQueryExecution 吗?
猜你喜欢
  • 2018-07-31
  • 2016-01-30
  • 2021-06-28
  • 2019-01-10
  • 2013-11-12
  • 2020-02-20
  • 1970-01-01
  • 2019-03-02
  • 2021-07-04
相关资源
最近更新 更多