java - 扁平化对象是否会使用 @DynamoDBFlattened 自动更新?

标签 java nosql amazon-dynamodb aws-java-sdk

我对 NoSQL 非常陌生。我正在查看aws-java-sdk-dynamodb,我发现这个注释@DynamoDBFlattened似乎可以扁平化内部复杂对象类型。

让我们假设以下结构:

@DynamoDBTable(tableName = "Product")
public class Product {

    @DynamoDBHashKey
    @DynamoDBAutoGeneratedKey
    private String id;

    @DynamoDBFlattened
    private Supplier supplier;

}

@DynamoDBTable(tableName = "Supplier")
public class Supplier {

    @DynamoDBHashKey
    @DynamoDBAutoGeneratedKey
    private String id;

    private String name;

}

现在假设我的供应商数据库中有以下供应商:

{
    "id": "1",
    "name": "Nick"
}

以及产品数据库中的以下产品:

{
    "id": "1",
    "supplier": { "id": "1", "name": "Nick" }
}

如果我将供应商数据库中的供应商更新为如下所示,会发生什么情况:

{
    "id": "1",
    "name": "John"
}

产品注册表会发生什么情况? ID 为 1 的产品的供应商名称是否会自动更新为 John?或者仍然是尼克?

最佳答案

不,两个表中的数据之间没有关系。 @DynamoDBFlattened 的目的是允许您在代码中使用复杂类型,这些类型一旦存储在 DynamoDB 表中,就会被平展为各个字段。

具体而言,在您的情况下,不应存在 Supplier 表,因为数据存储在 Product 表中。它只能通过产品检索,除非您使用二级索引来获取供应商。

关于java - 扁平化对象是否会使用 @DynamoDBFlattened 自动更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48827799/

相关文章:

java - 以编程方式将文件上传到 SalesForce

java - Spring Boot + Java 模块 = 不支持的类文件主要版本

java - 处理两个或多个 noSQL 数据库事务的方法是什么?

hadoop - HBase读取高负载

Java - Google App Engine - 在 Google Datastore 中建模图形结构

python - 如何查询DynamoDB中一列的所有行?

python - 动态模块 : query using more than two attributes

python-3.x - dynamo 根据条件 boto3 插入或更新

java - 连接到外部数据库和发送 Web 请求时,C# .NET 和 Java 的安全性如何?

java - 让 jsvc 在 OSX 上工作