@transactional(readonly = true) 与 Hibernate 中的 @transaction

@transactional(readonly = true) Vs @transaction in Hibernate

我知道@transaction 和@transaction(readOnly=true)的用法和基本理解。

但在我的项目中,在一项服务中,我使用了 @transaction(readOnly=true) -->> 它执行所有 CRUD 操作。在我的另一项服务中,它不允许我更新 table。我必须删除“readOnly=true”。

我根本不明白它是如何允许在一项服务中执行所有操作而在其他服务中不允许执行所有操作的。我对这个概念的基本理解有什么遗漏吗?

这只是一个 hint.the 只读参数并不能保证其行为,只是一个可能会或可能不会被考虑在内的提示。Source
这只是对实际交易子系统的提示;它不一定会导致写访问尝试失败。无法解释只读提示的事务管理器在请求只读事务时不会抛出异常,而是默默地忽略提示。
它与传播设置密切相关。例如:对于 SUPPORT,将永远不会使用 readOnly 标志;对于 REQUIRES_NEW 总是;对于 REQUIRED,它取决于我们是否已经处于事务上下文中,等等。