Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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
DynamoDBTypeConvertedJson键的属性顺序_Json_Amazon Dynamodb - Fatal编程技术网

DynamoDBTypeConvertedJson键的属性顺序

DynamoDBTypeConvertedJson键的属性顺序,json,amazon-dynamodb,Json,Amazon Dynamodb,我正在使用一个DDB,它使用DynamoDBTypeConvertedJson将使用DynamoDBMapper的项转换为分区键 例如: public class TestObject{ private int id; private String name; } @DynamoDBTable(tableName = TestTable.TABLE_NAME) public class DynamoDBTestItem{ private testObj; @DynamoDB

我正在使用一个DDB,它使用DynamoDBTypeConvertedJson将使用DynamoDBMapper的项转换为分区键

例如:

public class TestObject{
   private int id;
   private String name;
}

@DynamoDBTable(tableName = TestTable.TABLE_NAME)
public class DynamoDBTestItem{
   private testObj;

@DynamoDBIndexHashKey(globalSecondaryIndexName = TestTable.TEST_INDEX)
@DynamoDBTypeConvertedJson
public TestObject getTestObject() {
    return testObject;
}

public void setTestObject(TestObject testObj) {
    this.testObj = testObj;
}
}
DynamoDBTypeConvertedJson似乎基于Jackson JSON,默认情况下,Jackson JSON不保持属性顺序。因此,我们可以将项目另存为

{\"id\":7,\"name\":\"ObjName\"} or {\"name\":ObjName,\"id\":\"7\"}
当我查询数据库时,我确实看到一些记录先有id,一些记录先有名称

现在,当我执行以下操作时:

DynamoDBTestItem hashKey = new DynamoDBTestItem;
hashKey = new TestObj(7, "ObjName");
            DynamoDBQueryExpression<DynamoDBTestItem> expression = new DynamoDBQueryExpression<DynamoDBTestItem>()
                .withIndexName(TestTable.TEST_INDEX)
                .withHashKeyValues(hashKey)
                .withConsistentRead(false);
DynamoDBTestItem hashKey=新的DynamoDBTestItem;
hashKey=newtestobj(7,“ObjName”);
DynamoDBQueryExpression表达式=新的DynamoDBQueryExpression()
.withIndexName(TestTable.TEST_索引)
.withHashKeyValues(hashKey)
.具有一致性读取(错误);
我想知道的是,这个查询是否会因为没有保留JSON属性顺序而导致未命中。因此,如果在保存的条目中“id”位于“name”之前,但当我们转到查询时,JSON决定将“name”置于“id”之前,这会导致未命中查询吗

从理论上看,这似乎会发生,但我还没有看到它在这个系统中发生,这就是为什么我很好奇。系统在这里是不是越来越幸运了


感谢注释()使用fasterxml jackson ObjectMapper,默认设置为(带有链接文档中提到的一些注意事项)

在您描述的情况下,排序将始终是相同的,但是可以创建排序不一致的情况