3

userNameでキー設定されたColumnFamilyの列としてユーザー名とパスワードがあります。

コンパレーター=UTF8Typewith column_metadata = [{column_name:username、validation_class:UTF8Type}、{column_name:password、validation_class:UTF8Type}];で列ファミリーTestUserInfoを作成します。

次のコードは、キーがデータベースに存在する場合に正常に機能します。キーが存在しない場合、 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からのログイン情報をチェックしているとしましょう。次に、userName(Key)がdbにない場合は、空の結果を正しく取得する必要がありますか?

ありがとう!

4

1 に答える 1

5

確かに、空またはnullのuserNameを指定していると文句を言っているように聞こえます。

于 2011-10-09T23:30:55.353 に答える