【问题标题】:Spring Boot + JPA - CrudRepository update and then readSpring Boot + JPA - CrudRepository 更新然后阅读
【发布时间】:2018-11-16 14:10:58
【问题描述】:

我有一个场景,需要先根据条件更新一些数据库记录,然后从数据库中读取这些记录。我正在使用CrudReposirtory,在我的控制器中我有一个服务,它使用@Query 调用存储库方法来更新记录,并且在下一行我试图读取相同的记录,但除非我是,否则记录不会更新脱离那个控制器方法。

【问题讨论】:

    标签: spring spring-boot spring-data-jpa


    【解决方案1】:

    如果您执行UPDATE 语句,则应将@Modifying@Query 结合使用。

    来自文档:

    @Modifying
    @Query("update User u set u.firstname = ?1 where u.lastname = ?2")
    int setFixedFirstnameFor(String firstname, String lastname);
    

    这将触发注释到方法的查询作为更新查询而不是选择一个。由于在执行修改查询后 EntityManager 可能包含过时的实体,我们会自动清除它(有关详细信息,请参阅 EntityManager.clear() 的 JavaDoc)。这将有效地删除仍在 EntityManager 中待处理的所有未刷新的更改。如果您不希望 EntityManager 被自动清除,您可以将 @Modifying 注解的 clearAutomatically 属性设置为 false;

    【讨论】:

      猜你喜欢
      • 2017-07-04
      • 2018-05-12
      • 2017-08-04
      • 2014-07-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      相关资源
      最近更新 更多