从 CassandraOperations 检索 DataStax 会话

Retrieve DataStax Session from CassandraOperations

Spring 引导数据 Cassandra 移除了从 org.springframework.data.cassandra.core.CassandraOperations 检索 com.datastax.driver.core.Session 的功能。我正在尝试纠正具有这些用法的旧代码。有没有一种简单的方法来检索 cassandra 会话?我正在寻找一种方法来从 Insert 创建准备好的语句,只能访问 CassandraOperations 的实例,例如

cassandraOperations.getSession().prepare(insert);

我们从 CassandraOperations 中删除了 getSession(),原因有二:

  • 接口分为 CassandraOperationsCqlOperationsCassandraTemplate(实现 CassandraOperations)现在使用 CqlOperations 作为较低级别的 API。
  • 我们引入了 SessionFactory 以便能够将 CQL 调用路由到各种 Cassandra Session。 CQL 执行从配置的 SessionFactory 中获取会话。在执行调用期间会话被认为是有效的,因为下一个命令可以在不同的会话上执行。

你仍然可以获得Session。要么调用:

CqlTemplate cqlTemplate = (CqlTemplate) cassandraTemplate.getCqlOperations();
cqlTemplate.getSession();

或通过Spring的上下文获取Session(自动装配,通过context.getBean(Session.class)查找,……)。