У меня есть два менеджера транзакций, и мне было любопытно, есть ли какая-нибудь возможность получить тот, который был использован.
Чтобы быть более конкретным, как underlyingMethod(..)
выяснить, какой транзакции использовался (без отправкиэто дополнительный параметр "actionManagerName / Ref "):
@Transactional("transactionManager1")
public void transactionFromFirstTM() {
someClass.underlyingMethod()
}
@Transactional("transactionManager2")
public void transactionFromSecondTM() {
someClass.underlyingMethod()
}
?
ok Я использовал это, чтобы получить сеанс гибернации от фактического менеджера транзакций:
protected Session getSession() {
Map<Object, Object> resourceMap = TransactionSynchronizationManager.getResourceMap();
Session session = null;
for (Object value : resourceMap.values()) {
if (value instanceof SessionHolder) {
session = ((SessionHolder) value).getSession();
break;
}
}
return session;
}