amazon-web-services - 具有 StaticTableSchema 的嵌套 bean 和来自 AWS Java SDK 2.x 的增强型 DynamoDB 客户端

标签 amazon-web-services kotlin amazon-dynamodb aws-java-sdk-2.x

如何创建StaticTableSchema对于嵌套 bean(例如这里的 items 属性)?

data class Order(
    var id: Long = 0L,
    var items: List<OrderLineItem> = emptyList(),
    …
)
data class OrderLineItem(
    var id: Long = 0L,
    var price: BigDecimal = 0.0.toBigDecimal(),
    …
)

最佳答案

首先,为嵌套 bean 创建一个 TableSchema 实现。它可能是 StaticTableSchemaBeanTableSchema :

val orderLineItemStaticTableSchema = TableSchema
    .builder(OrderLineItem::class.java)
    .newItemSupplier(::OrderLineItem)
    .addAttribute(Long::class.java) {
        it.name("id").getter(OrderLineItem::id::get).setter(OrderLineItem::id::set)
    }
    .addAttribute(BigDecimal::class.java) {
        it.name("price").getter(OrderLineItem::price::get).setter(OrderLineItem::price::set)
    }
    .build()

// or

val orderLineItemBeanTableSchema = TableSchema.fromBean(OrderLineItem::class.java)

然后,将此架构实例与EnhancedType.documentOf()一起使用:

val tableSchema = TableSchema
    .builder(Order::class.java)
    .newItemSupplier(::Order)
    .addAttribute(Long::class.java) {
        it.name("id").getter(Order::id::get).setter(Order::id::set)
    }
    .addAttribute(
        EnhancedType.listOf(
            EnhancedType.documentOf(OrderLineItem::class.java, orderLineItemTableSchema)
        )
    ) {
        it.name("items").getter(Order::items::get).setter(Order::items::set)
    }
    .build()

关于amazon-web-services - 具有 StaticTableSchema 的嵌套 bean 和来自 AWS Java SDK 2.x 的增强型 DynamoDB 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71573650/

相关文章:

amazon-web-services - AWS Api Gateway 本地测试/开发

ios - 如何在我的 iOS/Swift 项目中调用我的 AWS API Gateway REST API

kotlin - 如何确保清除由ktor Websocket客户端创建的所有Kotlin协程?

android - 在 Kotlin 中,当变量与 lambda 接收器中的字段同名时,如何从作用域函数外部引用变量

amazon-dynamodb - DynamoDB 是否支持在表的主键中使用其中一种数据类型?

amazon-web-services - 解析程序中的AppSync GraphQL变异服务器逻辑

java - 当前使用 DynamoDBmapper 查询 GSI、按排序键排序并返回 n 个结果的方法?

python - 实时 ECS 登录 Cloudwatch

ssl - Firefox 中的连接部分加密 :SSL

Android Studio 分析无穷大