Reputation: 623
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
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