К сожалению, в Кассандре просто невозможно сделать это с одним семейством столбцов.Проблема в том, что вы хотите, чтобы cassandra сортировал по двум различным причинам: datetime1 и datetime2.
Очевидная структура для этого состоит в том, чтобы ваши столбцы были составными типами составных (TimeUUID, TimeUUID, Integer).В этом случае они будут отсортированы по datetime1, затем datetime2, а затем целому числу.
Но вы всегда получите порядок, основанный на datetime1, а не на datetime2 (хотя, если две записи имеют одинаковый datetime1, тогда это будетупорядочить только эти записи на основе datetime2).
Возможный обходной путь - иметь два семейства столбцов с дублирующимися данными (или, по сути, две строки для каждой логической строки).Одна строка, в которую вставляются данные (datetime1: datetime2: integer), а другая - куда они вставляются (datetime2: datetime1: integer).Затем вы можете выполнить операцию над несколькими строками и объединить данные, прежде чем передать их вызывающей стороне:
final MultigetSliceQuery<String, Composite, String> query = HFactory.createMultigetSliceQuery(keyspace,
StringSerializer.get(),
CompositeSerializer.get(),
StringSerializer.get());
query.setColumnFamily("myColumnFamily");
startQuery.setKeys("myRow.arrangedByDateTime1", "myRow.arrangedByDateTime2");
startQuery.setRange(new Composite(startTime), new Composite(endTime), false, Integer.MAX_VALUE);
final QueryResult<Rows<String,Composite,String>> queryResult = query.execute();
final Rows<String,Composite,String> rows = queryResult.get();