我有方法M.與服務A. @Transactional覆蓋事務方法
我service B extends A
與overrided方法M.
將被overrided方法M.還是交易? 或者我應該加上那裏@Transactional?
我有方法M.與服務A. @Transactional覆蓋事務方法
我service B extends A
與overrided方法M.
將被overrided方法M.還是交易? 或者我應該加上那裏@Transactional?
大多數情況下,您可以在課堂上使用一個@Transactional。但是有時你需要定製一種方法來改變行爲。在這些情況下,使用相同的@Transactional註釋標記所有其他方法仍然是多餘的。
經編持續提供了一種工具,其中如果需要的話可以重寫類的具有特定@Transactional事務行爲的具體方法:
@Transactional
public class MyRepository {
public void save(Thing t) { .. }
@Transactional(rollbackOn = NoSuchEntityException.class) //optional
public void remove(Thing t) { .. }
public Thing fetch(Long id) { .. }
}
在上面的例子中,保存()和取()具有標準事務行爲在類級別上指定。但是remove()有一個特定的rollbackOn子句,它被用來代替。
請記住,對於事務包裝,不能攔截私有方法。這是因爲你不能在子類中重載私有方法。如果遇到任何這樣的方法,他們將被默默地忽略。