I created a table and two indexes on it i am not able to do filter query from my spring application
сначала я создал таблицу
CREATE TABLE keyspace.favourite_setting (
id uuid,
user_name text,
filter_name text,
columns LIST<FROZEN<columns_def>>,
filters text,
PRIMARY KEY (id)
);
секунду я добавил два индекса
CREATE INDEX IF NOT EXISTS user_name_index ON keyspace.favourite_setting (user_name)
CREATE INDEX IF NOT EXISTS filter_name_index ON keyspace.favourite_setting (filter_name);
затем я пытаюсь отфильтровать ошибкуВы должны разрешить фильтр, хотя я уже это делаю ...
Мой аксессуар
@Accessor
public interface FavouriteSettingAccessor {
@Query("select * from favourite_setting where user_name =:userName allow filtering " )
Result<FavouriteSetting> getAllByUserName(@Param("userName") String userName );
}
Мой сервис Impl
@Override
public List<FavouriteSetting> getAllFilterNames(String userName) throws Exception {
session = cassandraFactory.getDataSource();
favouriteSettingAccessor =
new MappingManager(session).createAccessor(FavouriteSettingAccessor.class);
return favouriteSettingAccessor.getAllByUserName(userName).all();
}
Моя любимая модель настроек
@Table(keyspace = "keyspace", name = "favourite_setting")
public class FavouriteSetting {
@PartitionKey
@Column(name = "id")
private UUID id;
@Column(name = "user_name")
private String userName;
@Column(name = "filter_name")
private String filterName;
@Column(name = "columns")
private List<ColumnsDef> columns;
@Column(name = "filters")
private String filters;
public FavouriteSetting(UUID id, String userName, String filterName,
List<ColumnsDef> columns, String filters) {
this.id = id;
this.userName = userName;
this.filterName = filterName;
this.columns = columns;
this.filters = filters;
}
public FavouriteSetting() {
}
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getFilterName() {
return filterName;
}
public void setFilterName(String filterName) {
this.filterName = filterName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public List<ColumnsDef> getColumns() {
return columns;
}
public void setColumns(List<ColumnsDef> columns) {
this.columns = columns;
}
public String getFilters() {
return filters;
}
public void setFilters(String filters) {
this.filters = filters;
}
}
Невозможно выполнить этот запрос, так как он может включать фильтрацию данных и, следовательно, может иметь непредсказуемую производительность.Если вы хотите выполнить этот запрос, несмотря на непредсказуемость производительности, используйте ALLOW FILTERING