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

Java AWS SDK操作DynamoDB写入成功读取报ValidationException异常

问题原因与解决方案

你遇到的ValidationException(400错误)是DynamoDB请求参数不符合规范的典型报错,结合你的代码和写入数据的情况,问题大概率出在以下几点:

1. 主键配置不匹配(最高概率)

DynamoDB的getItem方法要求必须传入完整的表主键才能定位唯一一条数据,只要不符合以下任意一种情况都会触发报错:

  • 如果你的表是单分区键主键:确认表的分区键名称必须完全等于EventId(DynamoDB属性名大小写敏感),不能是其他名称比如id、event_id。
  • 如果你的表是「分区键+排序键」的复合主键:你只传EventId一个参数完全不符合要求,必须同时传入分区键和排序键的键名与对应值,示例写法:
// 假设你的表主键为 分区键AggregateId + 排序键Version
GetItemSpec getItemSpec = new GetItemSpec()
        .withPrimaryKey("AggregateId", "你的聚合ID值", "Version", 1L);
Item item = table.getItem(getItemSpec);

如果EventId不是你的表主键,只是普通字段:你不能用getItem查询,要么给EventId创建全局二级索引(GSI)后用query方法查询,要么用scan方法全表扫描(性能差不推荐)。

2. 代码语法错误

你贴出的testEvent方法里getItem调用明显少了右括号,正确写法应该是:

public void testEvent(final UUID eventId) {
    table.getItem("EventId", eventId.toString());
}

如果实际代码里也漏写了,修正后即可正常编译运行。

快速验证方法

打开DynamoDB控制台,进入对应表的「表详情」-「附加信息」-「主键」部分,就能看到建表时设置的主键配置,和你的查询参数比对即可快速定位问题。

内容的提问来源于stack exchange,提问作者Tomás Juárez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:45:01