2015-02-03 2 views
2

보조 인덱스가 있다는 점에서 테이블이 있습니다. 보조 인덱스는 DynamoDB 마샬링을 사용합니다.Marshaller를 사용하는 RangeKey로 DynamoDB GSI를 쿼리하는 방법

어떻게이 GSI에서 테이블을 쿼리합니까? addRangeKeyCondition은 withS 및 withN 메소드 만 지원합니다. 내 개체로 쿼리하려면 어떻게해야합니까?

DynamoDBQueryExpression<RequestPerOfferItem> queryExpr = new DynamoDBQueryExpression<>(); 
queryExpr.withHashKeyValues(item).withRangeKeyCondition("KeyName", 
       new Condition().withAttributeValueList(new AttributeValue().withS(val)).withComparisonOperator(
         ComparisonOperator.EQ)); 

하지만 내 범위 키는 마샬을 사용하기 때문에 나는이 작업을 수행 할 수 없습니다 이이 범위 키가 문자열 인 경우 내가 그것을 조회하는 방법입니다. 이 범위 키를 사용하여 내 GSI를 어떻게 쿼리합니까?

답변

1

당신은 객체의 캐릭터 라인 표현을 얻을 수있는 마샬 자신을 사용할 수 있습니다

public static class YourObjectMarshaller implements DynamoDBMarshaller<YourObject> 
{ 
    public static final YourObjectMarshaller instance = new YourObjectMarshaller(); 
... 
} 

는 그런 다음 YourObjectMarshaller.instance.marshall(obj)로 직접 사용하고 문자열 옆 널빤지로 전달할 수 있습니다.

0

DynamoDBMapper를 사용하는 경우 @DynamoDBMarshalling 주석을 사용하고 DynamoDBMarshaller을 지정하여 개체에 사용할 수 있습니다.

@DynamoDBMarshalling(YourObjectMarshaller.class) 
public YourObject getYourObject() { 
    .... 
} 
관련 문제