展平对象是否会使用@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 中。它只能通过产品检索,除非您使用二级索引来获取供应商。
我是 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 中。它只能通过产品检索,除非您使用二级索引来获取供应商。