SliceQuery в Hector API для базы данных cassandra выдает HInvalidRequestException: InvalidRequestException (почему: ключ не может быть пустым) - PullRequest
3 голосов
/ 09 октября 2011

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

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

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

    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();
    }

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

Спасибо!

1 Ответ

5 голосов
/ 10 октября 2011

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

...