我对Dynamo DB非常陌生,也许这是一个非常琐碎的问题,但是我已经查阅了Dynamo DB的文档和堆栈溢出的问题,但我找不到任何链接告诉我如何查询只有哈希键而没有指定范围键的GSI。
我收到了异常消息:“非法查询表达式:在查询中未找到哈希键条件。”
我对Dynamo DB非常陌生,也许这是一个非常琐碎的问题,但是我已经查阅了Dynamo DB的文档和堆栈溢出的问题,但我找不到任何链接告诉我如何查询只有哈希键而没有指定范围键的GSI。
我收到了异常消息:“非法查询表达式:在查询中未找到哈希键条件。”
在您的DynamoDB注解模型对象上,应使用@DynamoDBIndexHashKey(globalSecondaryIndexName = "gsiIndexName)
表示它是GSI的哈希键:
@DynamoDBTable(tableName = "myTable")
public class MyTable {
...
@DynamoDBIndexHashKey(globalSecondaryIndexName = "myGsi")
public String getGsiHk() {
return gsiHk;
}
...
}
然后在DynamoDBMapper
上使用query
方法:
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);