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