使用DynamoDB transactionWrite后Java对象的version属性是否会被修改?
问题解答
这是预期行为。
DynamoDBMapper 1.11.x在处理带有@DynamoDBVersionAttribute注解的实体时,不管是单表的update操作,还是通过transactionWrite执行的事务内更新,都会在操作成功后自动将DynamoDB端递增后的最新版本值回填到传入的Java实体对象的version属性中。
在你的代码场景里:
- 你通过
transactionWriteRequest.addUpdate(entity)将带版本属性的Entity加入事务更新 - 事务执行时,DynamoDB会自动递增该实体的版本号以实现乐观锁控制
- 操作完成后,DynamoDBMapper会把最新的版本值同步回你传入的
entity对象实例,所以你能观测到前后version值的变化
这种设计的目的是为了让后续对该实体的操作可以直接使用更新后的版本值,无需额外查询DDB获取最新版本,简化并发操作的逻辑。虽然官方文档没有专门针对transactionWrite场景单独说明,但这是DynamoDBMapper处理版本属性的通用行为,与单表更新的逻辑一致。
内容的提问来源于stack exchange,提问作者Sai
相关产品推荐
相关产品推荐

