我有以下问题:我想从会话列表开始列出Cassandra模板。但问题是在运行时我得到会话对象为空。 我使用的代码如下:
def max_zeros(c):
v = c.values != 0
d = np.diff(np.flatnonzero(np.diff(np.concatenate([[True], v]))))
return d[::2].max()
df.apply(max_zeros)
col0 6
col1 3
dtype: int64
我从服务器得到以下答案:
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.cassandra.config.CassandraClusterFactoryBean;
import org.springframework.data.cassandra.config.CassandraSessionFactoryBean;
import org.springframework.data.cassandra.config.SchemaAction;
import org.springframework.data.cassandra.convert.CassandraConverter;
import org.springframework.data.cassandra.core.CassandraOperations;
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.stereotype.Component;
@Component
public class KeyspaceSession {
@Autowired
@Qualifier("cluster")
CassandraClusterFactoryBean cluster;
@Autowired
@Qualifier("converter")
CassandraConverter converter;
public List<CassandraOperations> getTemplates(){
List<CassandraOperations> listOfTemplates = new ArrayList<>();
for(CassandraKeyspaces keyspace : CassandraKeyspaces.values()){
CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
session.setCluster(cluster.getObject());
session.setKeyspaceName(keyspace.getKeyspace());
session.setConverter(converter);
session.setSchemaAction(SchemaAction.CREATE_IF_NOT_EXISTS);
CassandraOperations op = new CassandraTemplate(session.getObject());
listOfTemplates.add(op);
}
return listOfTemplates;
}
}
答案 0 :(得分:1)
CassandraSessionFactoryBean
需要初始化。在获得CassandraSessionFactoryBean.afterPropertiesSet()
之前致电Session
。您还需要清除应用程序关闭时的会话。
理想情况下,您需要为要创建的每个BeanDefinition
和Session
bean注册CassandraOperations
。
参考文献:
答案 1 :(得分:0)
我还没有和Spring一起工作过,所以请原谅我,如果我错过了什么。但是我没有看到你设置了任何联系点,所以驱动程序将如何知道要查询的集群?
试试这个:
bindParam