CassandraTemplate.execute批处理语句在Spring中需要帮助

时间:2014-08-09 20:28:15

标签: java spring cassandra datastax

我很难找到一个使用批处理语句执行的示例程序作为org.springframework.data.cassandra.core.CassandraTemplate的参数;

基本上我正在尝试多批插入。

CqlTemplate cqltemplate = new CqlTemplate(session);
cqltemplate.execute(Batch arg0);

这一切是如何结合在一起的?批处理在处理将多个记录插入任何未知表(未链接到实体类)时也存在问题。我的项目需要一个方法来为给定的表执行多次插入以及键和值的散列映射(行数据) - 它没有等效的POJO类。有关如何实现这一目标的任何建议吗?

2 个答案:

答案 0 :(得分:4)

我能够解决这个问题。谢谢你的指导。很抱歉发布迟了:

Insert insert1 = QueryBuilder.insert...
Batch batch = QueryBuilder.batch(insert1);
Insert insert2 = QueryBuilder.insert...
batch.add(insert2);

CassandraOperations cassandraOperations = new CassandraTemplate(session);
WriteOptions options = new WriteOptions();
options.setTtl(60);
options.setConsistencyLevel(ConsistencyLevel.ONE);
options.setRetryPolicy(RetryPolicy.DOWNGRADING_CONSISTENCY);
cassandraOperations.execute(batch.toString(), options);

答案 1 :(得分:3)

根据reference您需要创建class com.datastax.driver.core.querybuilder.Batch的对象。 您可以使用com.datastax.driver.core.querybuilder.QueryBuilder batch方法进行制作。不应在代码中创建CQLTemplate,它应该在配置中注入:

CQLTemplate cqlTemplate=new CQLTemplate();
yourServiceBean.setCQLTemplate(cqlTemplate);

在你的服务/ dao中它会是这样的:

Batch batch=QueryBuilder.batch (...)
cqlTemplate.execute(batch);