In your object with the annotated DynamoDB model, you should use @DynamoDBIndexHashKey(globalSecondaryIndexName = "gsiIndexName) to indicate that this is a hash key for the GSI:
@DynamoDBTable(tableName = "myTable") public class MyTable { ... @DynamoDBIndexHashKey(globalSecondaryIndexName = "myGsi") public String getGsiHk() { return gsiHk; } ... }
And then use the query method on DynamoDBMapper :
final MyTable gsiKeyObj = new MyTable(); gsiKeyObj.setGsiHk("myGsiHkValue"); final DynamoDBQueryExpression<MyTable> queryExpression = new DynamoDBQueryExpression<>(); queryExpression.setHashKeyValues(gsiKeyObj); queryExpression.setIndexName("myGsi"); queryExpression.setConsistentRead(false);
source share