有没有什么方法可以使用Spring Data在Cassandra的所有键空间上执行查询?
答案 0 :(得分:3)
这个答案有两个部分:
CassandraTemplate
个实例。SessionFactory
接口来控制要使用的Session
。我们随routing SessionFactory
support一起提供,因此您可以提供多个会话和一个鉴别器(通常基于ThreadLocal
)来选择适当的Session
。 2.0的一些示例代码如下所示:
class MyRoutingSessionFactory extends AbstractRoutingSessionFactory {
ThreadLocal<String> lookupKey = ThreadLocal.withInitial(() -> "default-session");
void setLookupKey(String lookupKey) {
this.lookupKey.set(lookupKey);
}
@Override
protected Object determineCurrentLookupKey() {
return lookupKey.get();
}
}
class MyConfig extends AbstractCassandraConfiguration {
@Bean
@Override
public SessionFactory sessionFactory() {
MyRoutingSessionFactory factory = new MyRoutingSessionFactory();
factory.setDefaultTargetSessionFactory(getRequiredSession());
MapSessionFactoryLookup lookup = new MapSessionFactoryLookup();
Session myOtherSession = …;
lookup.addSessionFactory("default-session", getRequiredSession());
lookup.addSessionFactory("my-other-session", myOtherSession);
factory.setSessionFactoryLookup(lookup);
return factory;
}
// …
}