2011-10-09 2 views
2

userName을 사용하여 ColumnFamily의 키로 사용자 이름과 비밀번호를 보유했습니다.Hector의 SliceQuery에서 cassandra DB 용 API가 HInvalidRequestException을 throw 함 : InvalidRequestException (이유 : Key가 비어 있지 않음)

column_metadata = 비교기와 함께 = UTF8Type 열 군을 생성 TestUserInfo [{COLUMN_NAME : 이름, validation_class : UTF8Type}, { COLUMN_NAME : 암호 validation_class : UTF8Type}];

다음 코드는 키가 db에있을 때 올바르게 작동합니다. 반면 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(); 
    } 

내가 잘못 가고있는 곳을 말해 줄 수 있습니까? 아니면 이것은 예상 된 행동입니까? 그렇다면 어떻게 빈 결과를 확인할 수 있습니까? DB에서 로그인 정보를 확인하고 있다고 가정 해보십시오. 그렇다면 userName (Key)가 db가 아닌 경우 빈 결과를 가져와야합니까?

감사합니다.

답변

4

빈 또는 null userName을 제공한다고 불평하는 소리가 나에게 확실합니다.