我对 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/