我的项目代码中有类似这样的
@Transactional(readOnly = true)
public void tt() {
dd();
}
@Transactional()
public void dd() {
gg();
}
@Transactional(readOnly = true)
public void gg() {
}
函数 dd 被其他只读事务函数使用,而不被只读函数使用。假设事务应该从 tt 的执行扩展到 gg - dd 中的操作是否是只读事务?
最佳答案
在这个特定示例中,您的问题没有实际意义。
tt()
对 dd()
的调用不会通过代理边界,因此不会对 dd()
应用事务建议>(因为它是同一实例内的调用)。与从 dd()
调用 gg()
相同。因此,只有从外部调用 tt()
实际上是事务建议的(在您的情况下,使用 readOnly=true
),这将是事务在整个调用链中使用。
但在一般情况下,请阅读@melihcelik 提示的文档 - 它解释了行为。
https://stackoverflow.com/questions/8257751/