如果我使用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的测试?
答案 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版本的发生变化。
CassandraTemplate
和CassandraConverter
是1.5版查询创建中涉及的关键类。在Spring Data 2.0中,事情会发生一些变化,因为2.0将带有额外的Query
和Update
类型用于部分实体更新。因此,查询创建从CassandraTemplate.create…Query(…)
移至QueryUtils.create…Query(…)
。