Mon*_*rts 7 java amazon-web-services amazon-dynamodb
我有一些DynamoDB表,所有表都具有相同结构的条目.我想创建一个POJO来表示所有这些条目,然后使用DynamoDB的Mapper API来加载和保存这些对象.
问题是API需要@DynamoDBTable我的POJO上的注释.这是一个编译时注释需要一个表名参数,因此会阻止我以动态方式使用POJO.DynamoDBMapperConfig似乎只允许这种动态行为更改.不幸的是,它对我不起作用:我收到客户端DDB错误,说我的POJO由于我在注释中放入的空字符串而未通过验证.
我一直在寻找为什么我的DynamoDBMapperConfig没有被尊重但却找不到任何东西.我的代码如下,精简到以下内容:
我的POJO:
@DynamoDBTable(tableName = "") // table name must be overridden on each call
public class TableEntry {
. . .
}
Run Code Online (Sandbox Code Playgroud)
我的客户:
public class MyMapper {
private final DynamoDBMapper mapper;
private final DynamoDBMapperConfig configs;
public MyMapper(String tableName) {
AmazonDynamoDBClient client = . . .;
mapper = new DynamoDBMapper(client);
configs = new DynamoDBMapperConfig.Builder()
.withTableNameOverride(TableNameOverride.withTableNameReplacement(tableName))
.build();
}
. . .
public void getEntry(String key) {
return mapper.load(TableEntry.class, key, configs);
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的代码(基本上类似于我在这里粘贴的代码)时,我收到以下消息:
2 validation errors detected: Value '' at 'tableName' failed to satisfy constraint: . . .
Run Code Online (Sandbox Code Playgroud)
它继续说(1)表名太短,(2)表名与正则表达式模式不匹配.
有什么建议为什么我的动态命名表不能与DynamoDB Mapper API一起使用?非常感谢文档参考.
[我找到了DynamoDBMapper 检索表名的位置,但我还没有找到任何线索.]
Che*_*rel 17
DynamoDBMapperConfig不是静态/全局类.您需要将它传递给DynamoDBMapper构造函数.
AmazonDynamoDBClient client = . . .;
mapperConfig = new DynamoDBMapperConfig.Builder().withTableNameOverride(TableNameOverride.withTableNameReplacement(tableName))
.build();
mapper = new DynamoDBMapper(client, mapperConfig);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7701 次 |
| 最近记录: |