我开始使用Amazon DynamoDB并遇到查询问题.
我有一个表Dev_Testgame1_Mail,id为主哈希键,后面是三个全局二级索引,
我有上面的代码来做查询,
**DynamoDBMail hashKObject = new DynamoDBMail();
hashKObject.setToPlayerId(playerId);
Condition endDateRangeKeyCondition = new Condition();
//endDateRangeKeyCondition.withComparisonOperator(ComparisonOperator.NULL).withAttributeValueList(new AttributeValue().withB(Utils.convertDateToByteBuffer(DateUtil.getUtcDateTime())));
endDateRangeKeyCondition.withComparisonOperator(ComparisonOperator.NULL);
DynamoDBQueryExpression<DynamoDBMail> queryExpression = new DynamoDBQueryExpression<DynamoDBMail>();
queryExpression.withHashKeyValues(hashKObject).withRangeKeyCondition("endDate", endDateRangeKeyCondition);
queryExpression.withIndexName("gsi_tp_enddt").withLimit(pageSize).withScanIndexForward(false);
return dynamodbMapper.queryPage(DynamoDBMail.class, queryExpression, new DynamoDBMapperConfig(TableNameOverride.withTableNamePrefix(Utils.getDynamoDBTableNamePrefix(gameId, env))));**
Run Code Online (Sandbox Code Playgroud)
我收到以下错误,
com.amazonaws.AmazonServiceException:状态代码:400,AWS服务:AmazonDynamoDBv2,AWS请求ID:GUUBV24K2O40T276R9NNN0EKB7VV4KQNSO5AEMVJF66Q9ASUAAJG,AWS错误代码:ValidationException,AWS错误消息:全局二级索引不支持一致读取
在这个问题上非常感谢您的帮助.
谢谢阿伦
rpm*_*rtz 15
设置queryExpressionto 的一致read属性false.把这一行:
queryExpression.withConsistentRead(false);
Run Code Online (Sandbox Code Playgroud)
要么
queryExpression.setConsistentRead(false);
Run Code Online (Sandbox Code Playgroud)
在你打电话之前
return dynamodbMapper.queryPage(DynamoDBMail.class, queryExpression, new DynamoDBMapperConfig(TableNameOverride.withTableNamePrefix(Utils.getDynamoDBTableNamePrefix(gameId, env))));
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我认为你NULL RangeKeyCondition没有为你做任何事情.
| 归档时间: |
|
| 查看次数: |
7256 次 |
| 最近记录: |