如何检查 Spring Data Cassandra Mapper 生成的查询字符串
How can I examine the query string generated by Spring Data Cassandra Mapper
如果我用 com.datastax.driver.mapping.annotations
中的注释注释 class,我可以按照以下行编写测试:
MappingManager manager = new MappingManager(session);
Mapper<MyAnnotatedClass> mapper = manager.mapper(MyAnnotatedClass.class);
MyAnnotatedClass entity = ...;
RegularStatement saveQuery = (RegularStatement) mapper.saveQuery(entity);
assertEquals("...", saveQuery.getQueryString());
但是我有实体 classes 用 org.springframework.data.cassandra.mapping
注释注释。我找不到与 Mapper
的 saveQuery()
、getQuery()
和 deleteQuery()
.
等价的 Spring
我如何编写(理想情况下在运行时是轻量级的)关于从 Spring Data Cassandra 注释实体 classes 生成的 CQL 的测试?
使用 Apache Cassandra 1.5 的 Spring 数据,您可以编写以下代码来创建 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());
注意:Spring Apache Cassandra 1.5 的数据使用 BATCH
语句进行插入,这将随着 2.0 版的发布而改变。
CassandraTemplate
和 CassandraConverter
是 1.5 版查询创建中涉及的关键 类。在 Spring Data 2.0 中,事情会发生一些变化,因为 2.0 将附带额外的 Query
和 Update
类型用于部分实体更新。因此查询创建从 CassandraTemplate.create…Query(…)
移动到 QueryUtils.create…Query(…)
。
如果我用 com.datastax.driver.mapping.annotations
中的注释注释 class,我可以按照以下行编写测试:
MappingManager manager = new MappingManager(session);
Mapper<MyAnnotatedClass> mapper = manager.mapper(MyAnnotatedClass.class);
MyAnnotatedClass entity = ...;
RegularStatement saveQuery = (RegularStatement) mapper.saveQuery(entity);
assertEquals("...", saveQuery.getQueryString());
但是我有实体 classes 用 org.springframework.data.cassandra.mapping
注释注释。我找不到与 Mapper
的 saveQuery()
、getQuery()
和 deleteQuery()
.
我如何编写(理想情况下在运行时是轻量级的)关于从 Spring Data Cassandra 注释实体 classes 生成的 CQL 的测试?
使用 Apache Cassandra 1.5 的 Spring 数据,您可以编写以下代码来创建 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());
注意:Spring Apache Cassandra 1.5 的数据使用 BATCH
语句进行插入,这将随着 2.0 版的发布而改变。
CassandraTemplate
和 CassandraConverter
是 1.5 版查询创建中涉及的关键 类。在 Spring Data 2.0 中,事情会发生一些变化,因为 2.0 将附带额外的 Query
和 Update
类型用于部分实体更新。因此查询创建从 CassandraTemplate.create…Query(…)
移动到 QueryUtils.create…Query(…)
。