DynamoDBMapper执行scan查询结果缺失locale属性如何解决
问题原因
你在实体类中为locale字段仅添加了二级索引专属的@DynamoDBIndexRangeKey注解,该注解仅用于标识字段在全局二级索引中的排序键角色,不会被DynamoDBMapper识别为主表的普通属性。当你针对主表执行scan操作时,Mapper只会映射显式标注了@DynamoDBHashKey、@DynamoDBRangeKey或@DynamoDBAttribute的字段,因此locale字段没有被赋值。
解决方案
给locale字段补充@DynamoDBAttribute注解即可,修改后的字段配置如下:
@DynamoDBAttribute(attributeName = "locale") @DynamoDBIndexRangeKey( attributeName = "locale", globalSecondaryIndexName = "skill-locale-index") private String locale;
补充排查点
如果修改后仍未生效,可以检查以下配置:
- 确认你没有在
DynamoDBScanExpression中配置ProjectionExpression主动排除locale字段,你当前使用的空扫描表达式默认会返回全表字段 - 确认存储到DynamoDB的记录中
locale字段名和注解配置的attributeName完全一致,大小写无偏差 - 建议
skill字段也同步补充@DynamoDBAttribute注解,避免后续其他主表查询操作出现属性丢失问题
内容的提问来源于stack exchange,提问作者Nitika
相关产品推荐
相关产品推荐

