Здравствуйте. Я использую Cassandra для сохранения пользовательских данных. Я хочу хранить данные пользователя только в течение 24 часов, поэтому я даю TTL в течение 24 часов. Для каждого пользователя есть несколько записей. Поэтому я хочу пакетную вставку данных для каждого пользователя вместо нескольких обращений к базе данных. Я использую операции Кассандры, чтобы дать TTL. Я могу дать TTL для одиночной записи. Как предоставить ttl при вставке данных в пакетах
public class CustomizedUserFeedRepositoryImpl<T> implements CustomizedUserFeedRepository<T> {
private CassandraOperations cassandraOperations;
@Autowired
CustomizedUserFeedRepositoryImpl(CassandraOperations cassandraOperations){
this.cassandraOperations = cassandraOperations;
}
@Override
public <S extends T> S save(S entity, int ttl){
InsertOptions insertOptions;
if(ttl == 0) {
insertOptions = InsertOptions.builder().ttl(Duration.ofHours(24)).build();
} else {
insertOptions = InsertOptions.builder().ttl(ttl).build();
}
cassandraOperations.insert(entity,insertOptions);
return entity;
}
@Override
public void saveAllWithTtl(java.lang.Iterable<T> entities, int ttl){
entities.forEach(entity->{
save(entity,ttl);
});
}
}
Как вы видите, мне приходится перебирать список make и делать вызовы базы данных для каждой записи. Пакетная операция cassandraOperations.batchOps (). Insert () принимает только список объектов. Как установить ttl для каждой записи при использовании функции batchops ()?