Java 如何检查Spring数据Cassandra Mapper生成的查询字符串

Java 如何检查Spring数据Cassandra Mapper生成的查询字符串,java,cassandra,spring-data-cassandra,Java,Cassandra,Spring Data Cassandra,如果我使用com.datastax.driver.mapping.annotations中的注释对一个类进行注释,我可以按照以下内容编写测试: MappingManager manager = new MappingManager(session); Mapper<MyAnnotatedClass> mapper = manager.mapper(MyAnnotatedClass.class); MyAnnotatedClass entity = ...; RegularStat

如果我使用
com.datastax.driver.mapping.annotations
中的注释对一个类进行注释,我可以按照以下内容编写测试:

MappingManager manager = new MappingManager(session);
Mapper<MyAnnotatedClass> mapper = manager.mapper(MyAnnotatedClass.class);

MyAnnotatedClass entity = ...;

RegularStatement saveQuery = (RegularStatement) mapper.saveQuery(entity);

assertEquals("...", saveQuery.getQueryString());
MappingManager=新的MappingManager(会话);
Mapper Mapper=manager.Mapper(MyAnnotatedClass.class);
MyAnnotatedClass实体=。。。;
RegularStatement saveQuery=(RegularStatement)映射器.saveQuery(实体);
assertEquals(“…”,saveQuery.getQueryString());
然而,我用
org.springframework.data.cassandra.mapping
注释了实体类。我找不到与
Mapper
saveQuery()
getQuery()
deleteQuery()相当的Spring


如何编写(理想情况下在运行时是轻量级的)关于从Spring数据Cassandra注释实体类生成的CQL的测试?

对于Apache Cassandra 1.5的Spring数据,您可以编写以下代码来创建
语句
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());
注意:ApacheCassandra1.5的Spring数据使用
BATCH
语句进行插入,这将随着2.0版的发布而改变


CassandraTemplate
CassandraConverter
是1.5版查询创建中涉及的关键类。在SpringData2.0中,情况将发生一些变化,因为2.0将附带用于部分实体更新的附加
查询
更新
类型。因此,查询创建从
CassandraTemplate.create…query(…)
移动到
QueryUtils.create…query(…)

没有测试支持来验证从Spring数据Cassandra注释实体类派生的语句。查询字符串测试背后的动机是什么?@mp911de我想要一种测试驱动的方法,在处理注释时衡量因果关系。有人可能会说,只有在表中列出的东西的因果关系才是重要的,但现在我觉得我更喜欢更具契约性的东西。这就像一种魅力——谢谢。
SELECT
是否有类似的功能?没有,因为在1.5中,您需要通过
SELECT
或使用普通CQL进行选择。您可以更深入地创建基于实体类型和id()的
WHERE
谓词,但这相当麻烦。