展平对象是否会使用@DynamoDBFlattened 自动更新?

Does flattened objects get automatically updated with @DynamoDBFlattened?

我是 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" }
}

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

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

Product 注册表发生了什么变化? ID 为 1 的产品是否会自动将其供应商名称更新为 John?还是留下尼克?

不,两个 table 中的数据之间没有任何关系。 @DynamoDBFlattened 的目的是允许您在代码中使用复杂类型,一旦存储在 DynamoDB table.

中,这些复杂类型就会被扁平化为单独的字段

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