DynamoDB 扫描有效但加载失败

问题描述 投票:0回答:1

我是 DynamoDB 新手,在使用 Java 代码从数据库加载数据时遇到一些问题。我可以从DDB控制台看到我成功地将数据存储在表中并通过扫描读取它。但如果我尝试使用负载,事情就会失败。

这就是我正在做的:

我想读取表格中的所有项目,所以我使用此代码

DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
    
List<SericonNoSQLdbRecord> scanResult = dynamoMapper.scan(tableName2Class(tableName), 
                                                          scanExpression);

for (SericonNoSQLdbRecord record : scanResult) 
  {
  record.printJSON();
  }

效果非常好,每个项目都会打印出来。事实上,这有效告诉我,我存储的底层类已正确注释。

后来我想读一篇。为此,我使用此代码

Object ob = dynamoMapper.load(tableName2Class(tableName), 
                              primaryIndex);  // this is the HashKey

执行此代码时,我可以看到调用了类的空构造函数(如预期),然后调用设置 HashKey。之后,我预计将调用属性的设置器,但这不会发生。相反,load 只是返回 null。我正在捕获错误,但似乎没有抛出任何错误。

我知道如果没有找到任何项目,load 将返回 null。但我的 HashKey 的 setter 被调用这一事实表明发现了一些东西。

关于这里可能出现问题的任何想法。关于如何进一步调试这个问题有什么想法吗?

java amazon-web-services amazon-dynamodb nosql dynamodb-mapper
1个回答
0
投票

我要做的第一件事是确保您传递给

load()
的值是您所期望的,很多时候您认为您正在传递一些东西,但它实际上以某种方式被掩盖了。

如果看起来不错,则使用 CLI 发出相同的请求,这样您就可以知道您的 java 实现是否有问题或者您的参数是否有问题。

在代码中添加大量日志行,使用调试器。

启用 http 线路日志记录,您可以看到正在请求和响应的内容。

© www.soinside.com 2019 - 2024. All rights reserved.