DynamoDB:如何创建具有嵌套 JSON 结构的表?

新手上路,请多包涵

我想在 dynamoDB 中创建一个具有以下结构的表。

 {
  "CartId": 123,
  "UserId": 356,
  "CartItems": [
    {
      "ProductId": 100,
      "Quantity": 50
    },
    {
      "ProductId": 121,
      "Quantity": 51
    }
  ]
}

在教程和文档中到处都说我们只能在表中包含以下类型的属性:

  1. 一组字符串

  2. 一组数字

  3. 一组二进制

我想不出在 DynamoDB 中存储上述结构的方法。你能帮忙吗?

我正在使用 java 的对象映射器 Api。如果您还可以告诉我如何创建一个可以映射到这个特定表结构的类,那就太好了。

原文由 Amit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 564
1 个回答

最简单的方法是使用 @DynamoDBDocument

  1. 添加 Maven 依赖
<dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-dynamodb</artifactId>
        <version>1.11.186</version>
</dependency>

  1. 创建POJO
 @DynamoDBTable(tableName = "Customer")
public class Customer
{
    @DynamoDBHashKey
    @DynamoDBAutoGeneratedKey
    private String id;

    private String firstName;

    private List<Foo> fooList;
}

@DynamoDBDocument
public static class Foo {
    private String name;
}

  1. 创建存储库
@EnableScan
public interface CustomerRepository extends CrudRepository<Customer,String>

然后调用 customerRepository.save(customer) 。结果将是这样的:

 {
  "firstName": "Test",
  "fooList": [
    {
      "name": "foo"
    },
    {
      "name": "foo2"
    }
  ],
  "id": "e57dd681-8608-4712-a39a-f3e0f31a5e27"
}

原文由 sendon1982 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题