SliceQuery в Hector API для cassandra DB выдает HInvalidRequestException: InvalidRequestException (почему: ключ не может быть пустым)

У меня есть имя пользователя и пароль в качестве столбцов ColumnFamily с ключом userName.

создать семейство столбцов TestUserInfo с компаратором = UTF8Type с column_metadata = [{column_name: username, validation_class:UTF8Type}, {column_name: password, validation_class:UTF8Type}];

Следующий код отлично работает, когда ключ присутствует в файле db. Принимая во внимание, что выдает me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestException(why:Key может быть не пустым) , когда ключ отсутствует.

    SliceQuery<String, String, String> sliceQuery = HFactory.createSliceQuery(cassandraDBObject.getKeyspace(), StringSerializer.get(), StringSerializer.get(), StringSerializer.get());
    sliceQuery.setColumnFamily("TestUserInfo");
    sliceQuery.setKey(userName);
    sliceQuery.setColumnNames("username", "password");
    String userNameFromDB = null;
    String passwordFromDB = null;
    try {
        [Error here -->] QueryResult<ColumnSlice<String, String>> queryResult = sliceQuery.execute();
        ColumnSlice<String, String> resultCol = queryResult.get();
        System.out.println(resultCol);
        userNameFromDB = resultCol.getColumnByName("username").getValue();
        passwordFromDB = resultCol.getColumnByName("password").getValue();
    } catch (Exception e) {
        e.printStackTrace();
    }

Можете ли вы сказать мне, где я ошибаюсь? Или это ожидаемое поведение? Если да, то как я могу проверить пустые результаты? Скажем, я проверяю информацию для входа в db. Тогда, если имя пользователя (ключ) не находится в БД, мне нужно получить пустой результат, верно?

Спасибо!


person aragon    schedule 09.10.2011    source источник


Ответы (1)


Конечно, мне кажется, что он жалуется на то, что вы даете ему пустое или нулевое имя пользователя.

person jbellis    schedule 09.10.2011