我有一张桌子,因为我有一个二级索引。我的二级索引使用DynamoDB编组。
如何查询此GSI上的表格? addRangeKeyCondition仅支持withS和withN方法。如何用我的对象查询它? 如果Range键是一个字符串,我就是这样查询它:
DynamoDBQueryExpression<RequestPerOfferItem> queryExpr = new DynamoDBQueryExpression<>();
queryExpr.withHashKeyValues(item).withRangeKeyCondition( "KeyName",
new Condition().withAttributeValueList(new AttributeValue().withS(val)).withComparisonOperator(
ComparisonOperator.EQ));
但我不能这样做,因为我的范围键使用了编组。如何使用此范围键查询我的GSI?
答案 0 :(得分:1)
您可以自己使用编组器来获取对象的String表示:
public static class YourObjectMarshaller implements DynamoDBMarshaller<YourObject>
{
public static final YourObjectMarshaller instance = new YourObjectMarshaller();
...
}
然后你可以自己使用YourObjectMarshaller.instance.marshall(obj)
并将其作为String withS。
答案 1 :(得分:0)
如果您使用的是DynamoDBMapper,则可以使用@DynamoDBMarshalling
注释并指定要用于对象的DynamoDBMarshaller
。
@DynamoDBMarshalling(YourObjectMarshaller.class)
public YourObject getYourObject() {
....
}