我试图根据运行时变量访问不同数据库中的数据。为此,我有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);
}
}
}
但我很难搞清楚为什么会这样。有线索吗?
版本:
针对类似问题提出bug,已在1.1 GA
版本中修复。
答案 0 :(得分:0)
通过扩展
起作用SimpleMongoDbFactory
:在DB getDb(String dbName)
中返回自定义数据库。MongoTemplate
:供应上述工厂。