我正在尝试根据运行时变量访问来自不同数据库的数据。为此,我有一个自定义实现MongoOperations
。我的实现与我的方法相同,MongoTemplate
只是我的getDb()
方法如下所示:
public DB getDb() {
return mongoDbFactory.getDb(PropertyManager.getCurrentTenant().getCode());
}
在事务中读取数据时,出现以下错误:
[TransactionSynchronizationUtils] - TransactionSynchronization.beforeCompletion threw exception
java.lang.IllegalStateException: No value for key [Mongo: localhost/127.0.0.1:27017] bound to thread
它似乎无害,因为仅记录此异常:
public static void triggerBeforeCompletion() {
for (TransactionSynchronization synchronization : TransactionSynchronizationManager.getSynchronizations()) {
try {
synchronization.beforeCompletion();
}
catch (Throwable tsex) {
logger.error("TransactionSynchronization.beforeCompletion threw exception", tsex);
}
}
}
但我很难弄清楚为什么会这样。有什么线索吗?
版本:
- spring-data-mongodb: 1.2.3.RELEASE
- spring-tx: 4.0.5.RELEASE
针对类似问题提出了一个错误1.1 GA
,该错误已在发行版中修复。