Как я могу проверить строку запроса, сгенерированную Spring Data Cassandra Mapper
Если я аннотирую класс с аннотациями из 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());
Однако у меня есть классы сущностей с пометкой org.springframework.data.cassandra.mapping
аннотаций. Я не смог найти Spring эквивалент Mapper
"s saveQuery()
, getQuery()
а также deleteQuery()
,
Как я могу написать (в идеале облегченный во время выполнения) тесты относительно CQL, сгенерированного из аннотированных классов сущностей Spring Data Cassandra?
1 ответ
В Spring Data для Apache Cassandra 1.5 вы можете написать следующий код для создания 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 Data для 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(…)
,