Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 展平对象是否会自动更新为@DynamoDBFlattened?_Java_Nosql_Amazon Dynamodb_Aws Java Sdk - Fatal编程技术网

Java 展平对象是否会自动更新为@DynamoDBFlattened?

Java 展平对象是否会自动更新为@DynamoDBFlattened?,java,nosql,amazon-dynamodb,aws-java-sdk,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

我对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": "Nick"
}
{
    "id": "1",
    "supplier": { "id": "1", "name": "Nick" }
}
如果我将供应商数据库中的供应商更新为如下所示,会发生什么情况:

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

产品注册会发生什么情况?id为1的产品是否自动将其供应商名称更新为John?还是保持不变?

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

具体来说,不应该有供应商表,因为数据存储在产品表中。除非使用辅助索引获取供应商,否则只能通过产品检索