通过spring data mongodb访问动态数据库

通过spring data mongodb访问动态数据库,mongodb,spring-mongo,Mongodb,Spring Mongo,我正在尝试基于运行时变量访问来自不同数据库的数据。为此,我有一个MongoOperations的自定义实现。我的实现与MongoTemplate相同,只是我的getDb方法如下所示: public DB getDb() { return mongoDbFactory.getDb(PropertyManager.getCurrentTenant().getCode()); } 在读取事务中的数据时,我发现以下错误: [TransactionSynchronizationUtils] -

我正在尝试基于运行时变量访问来自不同数据库的数据。为此,我有一个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数据mongodb:1.2.3.1版本 弹簧tx:4.0.5.0释放
在1.1 GA版本中修复了一个类似的问题。

它通过扩展

SimpleMongoDbFactory:返回DB getDbString dbName中的自定义DB。 MongoTemplate:工厂以上供货。