DynamoDBTypeConvertedJson键的属性顺序
我正在使用一个DDB,它使用DynamoDBTypeConvertedJson将使用DynamoDBMapper的项转换为分区键 例如: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
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,默认设置为(带有链接文档中提到的一些注意事项) 在您描述的情况下,排序将始终是相同的,但是可以创建排序不一致的情况