dunn less
dunn less

Reputation: 623

Spring data cassandra - Cannot resolve DataType for property [retryPolicy] for WriteOptions

Spring boot version 2.1.9.RELEASE and using the dependency for spring-boot-starter-data-cassandra

For the following snippet

WriteOptions ttlOption = WriteOptions.builder().ttl(5).build();
CassandraBatchOperations batchOperations = cassandraTemplate.batchOps();
batchOperations.insert(myEntityClass, ttlOption);

We are currently getting the following exception

Caused by: org.springframework.data.mapping.MappingException: Cannot resolve DataType for property [retryPolicy] in entity [org.springframework.data.cassandra.core.cql.WriteOptions]; Consider adding @CassandraType.
at org.springframework.data.cassandra.core.mapping.CassandraMappingContext.getDataTypeWithUserTypeFactory(CassandraMappingContext.java:612)
at org.springframework.data.cassandra.core.mapping.CassandraMappingContext.getDataType(CassandraMappingContext.java:556)
at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.getPropertyTargetType(MappingCassandraConverter.java:710)
at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.lambda$getTargetType$3(MappingCassandraConverter.java:700)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.getTargetType(MappingCassandraConverter.java:688)
at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.getWriteValue(MappingCassandraConverter.java:731)
at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.writeInsertFromWrapper(MappingCassandraConverter.java:420)
at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.write(MappingCassandraConverter.java:363)
at org.springframework.data.cassandra.core.convert.MappingCassandraConverter.write(MappingCassandraConverter.java:347)
at org.springframework.data.cassandra.core.QueryUtils.createInsertQuery(QueryUtils.java:107)
at org.springframework.data.cassandra.core.CassandraBatchTemplate.insert(CassandraBatchTemplate.java:121)
at org.springframework.data.cassandra.core.CassandraBatchTemplate.insert(CassandraBatchTemplate.java:100)
at org.springframework.data.cassandra.core.CassandraBatchTemplate.insert(CassandraBatchTemplate.java:92)

What am i missing?

Upvotes: 1

Views: 1315

Answers (1)

dunn less
dunn less

Reputation: 623

Found the answer.

Turns out that the argument list is either

CassandraBatchOperations insert(Object... var1);
CassandraBatchOperations insert(Iterable<?> var1);
CassandraBatchOperations insert(Iterable<?> var1, WriteOptions var2);

Hence i needed to provide the argument as an iterable to be able to have a WriteOptions as the second argument.

e.g

batchOperations.insert(List.of(myEntityClass), ttlOption);

Upvotes: 2

Related Questions