DynamoDBAttribute 与 DynamoDbEnhancedAsyncClient 不工作
DynamoDBAttribute with DynamoDbEnhancedAsyncClient not working
使用 @DynamoDBAttribute
重命名字段似乎不适用于新的 DynamoDbEnhancedAsyncClient
。
实体:
@DynamoDbBean
public class TableEntity {
@DynamoDBAttribute(attributeName = "unique_id")
private String id;
public TableEntity() {
}
public TableEntity(String id) {
this.is = id;
}
@DynamoDbPartitionKey
public String getId() {
return id;
}
DynamoDBAsyncClient:
DynamoDbEnhancedAsyncClient dynamoDbAsyncClient = DynamoDbEnhancedAsyncClient.builder().dynamoDbClient(DynamoDbAsyncClient.builder().build()).build();
Table:
DynamoDbAsyncTable<TableEntity> table = dynamoDbAsyncClient.table(tableName, TableSchema.fromBean(TableEntity));
当我尝试 CreatTable
:
table.createTable(
CreateTableEnhancedRequest.builder()
.provisionedThroughput(
ProvisionedThroughput.
builder()
.readCapacityUnits(2L)
.writeCapacityUnits(2L)
.build())
.build()
).get();
我看到 table 字段名称为 id
而不是 unique_id
。
有没有人解决过这个问题或遇到过同样的问题?我没有尝试使用同步版本,但我很好奇是否有人使用同步版本,即使用 DynamoDbEnhancedClient
和 DynamoDbTable
?
我正在使用 software.amazon.awssdk:dynamodb-enhanced:2.17.75
库。
根据文档 here,我们需要定义一个自定义架构来完成这项工作。即 DynamoDBAttribute
不适用于增强型客户端。具体使用如下TableEntity
class:
static final TableSchema<TableEntity> MY_TABLE_SCHEMA =
TableSchema.builder(TableEntity.class)
.newItemSupplier(TableEntity::new)
.addAttribute(String.class, a -> a.name("unique_id")
.getter(TableEntity::getId)
.setter(TableEntity::setId)
.tags(primaryPartitionKey()));
并按如下方式传递模式:
DynamoDbAsyncTable<TableEntity> table = dynamoDbAsyncClient.table(tableName, MY_TABLE_SCHEMA)
;
无需更改 CreateTableRequest
。
使用 @DynamoDBAttribute
重命名字段似乎不适用于新的 DynamoDbEnhancedAsyncClient
。
实体:
@DynamoDbBean
public class TableEntity {
@DynamoDBAttribute(attributeName = "unique_id")
private String id;
public TableEntity() {
}
public TableEntity(String id) {
this.is = id;
}
@DynamoDbPartitionKey
public String getId() {
return id;
}
DynamoDBAsyncClient:
DynamoDbEnhancedAsyncClient dynamoDbAsyncClient = DynamoDbEnhancedAsyncClient.builder().dynamoDbClient(DynamoDbAsyncClient.builder().build()).build();
Table:
DynamoDbAsyncTable<TableEntity> table = dynamoDbAsyncClient.table(tableName, TableSchema.fromBean(TableEntity));
当我尝试 CreatTable
:
table.createTable(
CreateTableEnhancedRequest.builder()
.provisionedThroughput(
ProvisionedThroughput.
builder()
.readCapacityUnits(2L)
.writeCapacityUnits(2L)
.build())
.build()
).get();
我看到 table 字段名称为 id
而不是 unique_id
。
有没有人解决过这个问题或遇到过同样的问题?我没有尝试使用同步版本,但我很好奇是否有人使用同步版本,即使用 DynamoDbEnhancedClient
和 DynamoDbTable
?
我正在使用 software.amazon.awssdk:dynamodb-enhanced:2.17.75
库。
根据文档 here,我们需要定义一个自定义架构来完成这项工作。即 DynamoDBAttribute
不适用于增强型客户端。具体使用如下TableEntity
class:
static final TableSchema<TableEntity> MY_TABLE_SCHEMA =
TableSchema.builder(TableEntity.class)
.newItemSupplier(TableEntity::new)
.addAttribute(String.class, a -> a.name("unique_id")
.getter(TableEntity::getId)
.setter(TableEntity::setId)
.tags(primaryPartitionKey()));
并按如下方式传递模式:
DynamoDbAsyncTable<TableEntity> table = dynamoDbAsyncClient.table(tableName, MY_TABLE_SCHEMA)
;
无需更改 CreateTableRequest
。