You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中使用DynamoDBEnhancedClient仅映射GSI

问题解答

可以使用仅映射partitionKey、fieldOne和fieldTwo这三个属性的类通过DynamoDBEnhancedClient查询该GSI,你提供的Java代码示例是完全可行的。

核心原因:

  • 你的GSI配置为ProjectionType.INCLUDE,仅投影了partitionKey(GSI分区键)、fieldOne(GSI排序键)和fieldTwo三个属性,和你定义的MyTable类属性完全匹配。
  • DynamoDBEnhancedClient查询GSI时,只会将返回的属性映射到实体类中,不存在的属性不会干扰查询执行,也不会抛出异常。

关键注意点:

  • 查询时必须明确指定要使用的GSI,示例代码如下:
DynamoDbTable<MyTable> table = enhancedClient.table("your-table-name", TableSchema.fromBean(MyTable.class));
QueryConditional queryConditional = QueryConditional.keyEqualTo(Key.builder()
        .partitionValue("目标分区键值")
        .sortValue("目标fieldOne值")
        .build());

PageIterable<MyTable> results = table.query(r -> r
        .queryConditional(queryConditional)
        .indexName("fieldOneGsi"));
  • 若后续GSI的投影属性调整,需同步修改实体类的属性或注解,避免数据映射不完整。

内容的提问来源于stack exchange,提问作者Liumx31

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:50:33