我是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?或者它留在尼克?
答案 0 :(得分:1)
不,两个表中的数据之间没有关系。 @DynamoDBFlattened
的目的是允许您在代码中使用复杂类型,这些类型一旦存储在DynamoDB表中就会展平为单个字段。
在具体情况下,不应该有Supplier
表,因为数据存储在Product
表中。它只能通过产品检索,除非您使用二级索引来获取供应商。