问题描述
Dynamo 表项
id : number
Name : string
age : number
Address : sting
Java pojo 是
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,而地址属性不变(这也是必需的)。
这种情况适用于所有 java 原语数字类型,如 int、float 等,也适用于 Integer、Float 等包装类。 我不知道,为什么原始类型被覆盖为默认值。有什么建议吗?
解决方法
flutter create --platforms=web,macos .
只会跳过空属性。 Java Primitives 不能为 null,因此使用适当的默认值进行初始化,例如 SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES
类型的 0。
'Address' 在您的情况下是一个字符串,它是一个 Java 对象,并且 Java 中的对象初始化为 null。同样,如果您将 POJO 中的“年龄”更改为对象类型 int
(原始整数的 Wrapper-Class),它不应被覆盖。
另一方面,在 Java 中命名属性时通常使用小驼峰命名(即“名称”和“地址”应分别为“名称”和“地址”)。例如,您可以使用 Integer
将这些映射到正确的 DynamoDB 表属性名称。