如何检查Spring Data Cassandra Mapper生成的查询字符串

时间:2017-07-21 12:59:42

标签: java cassandra spring-data-cassandra

如果我使用MappingManager manager = new MappingManager(session); Mapper<MyAnnotatedClass> mapper = manager.mapper(MyAnnotatedClass.class); MyAnnotatedClass entity = ...; RegularStatement saveQuery = (RegularStatement) mapper.saveQuery(entity); assertEquals("...", saveQuery.getQueryString()); 中的注释注释一个类,我可以按照以下方式编写测试:

org.springframework.data.cassandra.mapping

但是我有用Mapper注释注释的实体类。我找不到与saveQuery() getQuery() deleteQuery() var str = JSON.stringify(obj, options.replacer, spaces) + '\n' //not sure if fs.writeFileSync returns anything, but just in case return fs.writeFileSync(file, str, options) 和{{1}}相当的Spring。

如何编写(在运行时非常轻量级)关于从Spring Data Cassandra注释的实体类生成的CQL的测试?

1 个答案:

答案 0 :(得分:3)

使用Apache Cassandra 1.5的Spring Data,您可以编写以下代码来创建Statement s:

CassandraTemplate template = …

Person person = …

CqlIdentifier tableName = template.getTableName(Person.class);

Insert insert = CassandraTemplate.createInsertQuery(tableName.toCql(), person, 
                    new WriteOptions(), template.getConverter());

Delete delete = CassandraTemplate.createDeleteQuery(tableName.toCql(), person,
                    new WriteOptions(), template.getConverter());

Update update = CassandraTemplate.createUpdateQuery(tableName.toCql(), person, 
                    new WriteOptions(), template.getConverter());

注意:Apache Cassandra 1.5的Spring数据使用BATCH语句进行插入,随着2.0版本的发生变化。

CassandraTemplateCassandraConverter是1.5版查询创建中涉及的关键类。在Spring Data 2.0中,事情会发生一些变化,因为2.0将带有额外的QueryUpdate类型用于部分实体更新。因此,查询创建从CassandraTemplate.create…Query(…)移至QueryUtils.create…Query(…)