Кундера Кассандра Удалить строку на основе индексированного столбца
Как удалить строки в Кассандре на основе индексированного столбца?
Пытался:
upload_id добавляется в таблицу в качестве индекса.
Delete from table where upload_id = '"+uploadId+"'"
Но это дает мне ошибку"NON PRIMARY KEY found in where clause"
,String selectQuery = "Select hashkey from table where upload_id='" + uploadId + "'"
entityManager.createNativeQuery(selectQuery).getResultList()
и удалите все элементы списка, используя цикл for. Этот запрос изменен кундерами для добавления LIMIT 100 ALLOW Filtering
,
Нашел вопрос, похожий на этот, в Кундере для Кассандры - удаление записи по ключу строки, но этот вопрос был задан в 2012 году, после этого в Кассандре и Кундере было много изменений.
1 ответ
Кундера по умолчанию использует LIMIT 100
, Ты можешь использовать query.setMaxResults(<integer>)
изменить предел соответствующим образом, а затем запустить цикл.
Пример:
Query findQuery = entityManager.createQuery("Select p from PersonCassandra p where p.age = 10", PersonCassandra.class);
findQuery.setMaxResults(5000);
List<PersonCassandra> allPersons = findQuery.getResultList();