1
我有两个事务管理器,很好奇,如果有一些可能性得到已被使用的。春天 - 得到使用TransactionManager
更具体的,怎么可能underlyingMethod(..)
找出使用transactionManager的(而不发送额外的参数 “transactionManagerName/REF”):
@Transactional("transactionManager1")
public void transactionFromFirstTM() {
someClass.underlyingMethod()
}
@Transactional("transactionManager2")
public void transactionFromSecondTM() {
someClass.underlyingMethod()
}
?
好,我已经使用这个从实际的事务管理器获得Hibernate的Session:
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;
}
你为什么需要它? – Bozho 2011-05-04 11:40:10
最初的计划是有两个数据库,并且通过在Transactional注释中定义链接的transactionManager名称来简单地选择正确的数据库(对于两个数据库,代码行为应该是相同的) – 2011-05-04 11:48:48