【发布时间】:2020-06-05 06:22:52
【问题描述】:
每当在JpaRepository 中使用Query 注释(insert、update 或delete)实现数据修改逻辑时,@Transactional(不一定在存储库方法上)和@Modifying 都必须是用过。
我的理解如下。 JpaRepository 提供的所有 crud 操作都是事务性的,除非我们覆盖它们。在存储库中实现方法时,我们需要确保它仍然是事务性的。只需使用@Transactional 注释即可实现。 readOnly 的默认值是 false,因此 spring “知道”它是一个修改查询。
问题是:为什么我们需要@Modifying 注释(连同@Transactional)? 也许我错过了什么?
我知道this 或that 之类的讨论,但如果@Transactional 包含所有需要的信息,为什么必须使用@Modifying,我没有明确解释。
【问题讨论】:
标签: java spring spring-data-jpa