记录更新时间戳未使用 DynamoDB 增强型客户端进行更新

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

我的 Kotlin Spring Boot 应用程序正在使用 DynamoDB 增强客户端来保存记录 - 该对象有一个

createdAt
updatedAt
字段,我试图让 DynamoDB 在创建/修改记录时自动进行适当设置,通过使用
@get:DynamoDbAutoGeneratedTimestampAttribute
注释两个时间戳字段。

虽然这些字段确实在创建时设置,但当触发记录更新时,永远不会修改

updatedAt
字段以反映最新时间戳,因为它应该具有设置为
WRITE_ALWAYS
的更新行为。我在这里缺少什么?

@DynamoDbBean
data class Record(
    @get:DynamoDbPartitionKey
    var uuid: String = UUID.randomUUID().toString(),
    @get:DynamoDbUpdateBehavior(UpdateBehavior.WRITE_IF_NOT_EXISTS)
    @get:DynamoDbAutoGeneratedTimestampAttribute
    var createdAt: Instant? = null,
    @get:DynamoDbUpdateBehavior(UpdateBehavior.WRITE_ALWAYS)
    @get:DynamoDbAutoGeneratedTimestampAttribute
    var updatedAt: Instant? = createdAt
)

@Bean
fun dynamoDbEnhancedClient(): DynamoDbEnhancedClient =
    DynamoDbEnhancedClient.builder()
        .dynamoDbClient(dynamoDbClient())
        .extensions(AutoGeneratedTimestampRecordExtension.create())
        .build()
amazon-web-services kotlin amazon-dynamodb dynamodb-enhanced-client
1个回答
0
投票

所以,至少对于Java来说,在创建DynamoDbEnhancedClient时需要设置扩展。查看 https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/ddb-en-client-extensions.html

例如

DynamoDbEnhancedClient.builder()
                      .dynamoDbClient(setupDynamoClient())
                      .extensions(
                         AutoGeneratedTimestampRecordExtension.create(),
                         VersionedRecordExtension.builder().build()
                      )
                      .build();
© www.soinside.com 2019 - 2024. All rights reserved.