发电机表项
id : number
Name : string
age : number
Address : sting是
id : int
Name : String
age : int
Address : String我的DynamoMapperConfig是
dynamoDBMapperConfig = new DynamoDBMapperConfig.Builder()
.withTableNameOverride(DynamoDBMapperConfig.TableNameOverride.withTableNameReplacement(tableName))
.withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES)
.build();要插入的Json是
{"id" : 1,"name":"xyz"}现在,当使用DynamoMapper.save(item,dynamoDBMapperConfig)更新记录时,它将"age“属性更新为0,而address属性不变(这也是必需的)。
本例适用于所有的java原语数字类型,如int、Float等,并且可以使用包装类,如Integer、float。我不知道,为什么原语类型被重写为默认值。有什么建议吗?
发布于 2021-02-15 19:14:25
SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES只会跳过空属性。不能为null,因此使用适当的默认值(如int类型为0)进行初始化。
在您的示例中,‘'Address’是一个字符串,它是一个Java对象,而Java中的对象是用null初始化的。类似地,如果您将POJO中的'age‘更改为对象类型Integer (原始in的包装器类),则不应该覆盖它。
另一方面,在用Java命名属性时,通常使用较低的camelCase (即'Name‘& 'Address’应该分别为'name‘和'address’)。例如,您可以使用@DynamoDBAttribute(attributeName = "Address")将这些属性映射到正确的DynamoDB表属性名。
https://stackoverflow.com/questions/65887997
复制相似问题