Получение неизвестного типа для ошибки RetryPolicy после обновления весенних данных cassandra до последней версии 2.0.7.RELEASE

Я обновил эти строки кода для поддержки spring-data-cassandra-2.0.7.RELEASE:

CassandraOperations cOps = new CassandraTemplate(session);  

От:

Insert insertStatement = (Insert)statement;
CqlTemplate.addWriteOptions(insertStatement, queryWriteOptions);
cOps.execute(insertStatement);

To:

Insert insertStatement = (Insert)statement;
insertStatement = QueryOptionsUtil.addWriteOptions(insertStatement, 
queryWriteOptions);
cOps.insert(insertStatement);

Вышеупомянутые изменения вызывают ошибку ниже:

Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Unknown type [interface com.datastax.driver.core.policies.RetryPolicy] for property [retryPolicy] in entity [com.datastax.driver.core.querybuilder.Insert]; only primitive types and Collections or Maps of primitive types are allowed
    at org.springframework.data.cassandra.core.mapping.BasicCassandraPersistentProperty.getDataType(BasicCassandraPersistentProperty.java:170)
    at org.springframework.data.cassandra.core.mapping.CassandraMappingContext.lambda$null$10(CassandraMappingContext.java:552)
    at java.util.Optional.orElseGet(Optional.java:267)
    at org.springframework.data.cassandra.core.mapping.CassandraMappingContext.lambda$getDataTypeWithUserTypeFactory$11(CassandraMappingContext.java:542)
    at java.util.Optional.orElseGet(Optional.java:267)
    at org.springframework.data.cassandra.core.mapping.CassandraMappingContext.getDataTypeWithUserTypeFactory(CassandraMappingContext.java:527)
    at org.springframework.data.cassandra.core.mapping.CassandraMappingContext.getDataType(CassandraMappingContext.java:486)
    at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.getPropertyTargetType(MappingCassandraConverter.java:689)
    at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.lambda$getTargetType$0(MappingCassandraConverter.java:682)
    at java.util.Optional.orElseGet(Optional.java:267)
    at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.getTargetType(MappingCassandraConverter.java:670)
    at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.getWriteValue(MappingCassandraConverter.java:711)
    at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.writeInsertFromWrapper(MappingCassandraConverter.java:403)
    at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.writeInsertFromObject(MappingCassandraConverter.java:360)
    at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.write(MappingCassandraConverter.java:345)
    at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.write(MappingCassandraConverter.java:320)
    at org.springframework.data.cassandra.core.QueryUtils.createInsertQuery(QueryUtils.java:78)
    at org.springframework.data.cassandra.core.CassandraTemplate.insert(CassandraTemplate.java:442)
    at org.springframework.data.cassandra.core.CassandraTemplate.insert(CassandraTemplate.java:430)

Запрос, передаваемый в качестве входных данных, имеет тип com.datastax.driver.core.querybuilder.Insert, содержащий:

INSERT INTO person (name,id,age) VALUES ('name01','123',23) USING TIMESTAMP 1528922717378000 AND TTL 60;

И параметры запроса, содержащие RetryPolicy и уровень согласованности, передаются. На основании документации, приведенной выше, изменения не работают. Может ли кто-нибудь дать мне знать, что здесь не так?

Я использую Spring 2.0.7.RELEASE с драйвером Cassandra 3.5.0.


person Cys    schedule 13.06.2018    source источник


Ответы (2)


Я смог работать с ним, используя следующие изменения:

cOps.getCqlOperations().execute(insertStatement);

Как я могу проверить уровень согласованности, если он был применен?

person Cys    schedule 13.06.2018
comment
После выполнения запроса; Я явно проверял существующий уровень согласованности с терминала CQL и гарантировал, что последний CL применяется каждый раз. - person Cys; 18.06.2018

Для меня это работает:

batchOps.insert(ImmutableSet.of(entity), insertOptions);
person Tomáš Hampl    schedule 04.08.2018