我对Dynamo DB很陌生,可能这是一个非常微不足道的问题,但我浏览了 Dynamo DB 的文档和堆栈溢出问题,但我找不到一个链接,它告诉我如何查询 DDB 以获取只有散列键的GSI和没有为相同的指定范围键。
我得到异常 Illegal query expression: No hash key condition is found in the query。
我对Dynamo DB很陌生,可能这是一个非常微不足道的问题,但我浏览了 Dynamo DB 的文档和堆栈溢出问题,但我找不到一个链接,它告诉我如何查询 DDB 以获取只有散列键的GSI和没有为相同的指定范围键。
我得到异常 Illegal query expression: No hash key condition is found in the query。
在您的 DynamoDB 注释模型对象上,您应该使用@DynamoDBIndexHashKey(globalSecondaryIndexName = "gsiIndexName)
它来表示它是 GSI 的哈希键:
@DynamoDBTable(tableName = "myTable")
public class MyTable {
...
@DynamoDBIndexHashKey(globalSecondaryIndexName = "myGsi")
public String getGsiHk() {
return gsiHk;
}
...
}
然后使用上的query
方法DynamoDBMapper
:
final MyTable gsiKeyObj = new MyTable();
gsiKeyObj.setGsiHk("myGsiHkValue");
final DynamoDBQueryExpression<MyTable> queryExpression =
new DynamoDBQueryExpression<>();
queryExpression.setHashKeyValues(gsiKeyObj);
queryExpression.setIndexName("myGsi");
queryExpression.setConsistentRead(false); // cannot use consistent read on GSI
final PaginatedQueryList<MyTable> results =
mapper.query(MyTable.class, queryExpression);