Spring Boot + JPA - CrudRepository 更新后读取

3

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

1个回答

4

如果您执行一个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,则可以将@Modifying注释的clearAutomatically属性设置为false;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接