如何使用@DynamoDBAutoGeneratedDefault为Boolean字段设置默认值
DynamoDB Boolean字段默认值设置问题解答
报错原因
Java注解的入参要求必须是编译期可确定的常量,你传入的Boolean.TRUE是JDK运行期初始化的Boolean包装类对象,不属于编译期常量,因此会抛出Attribute value must be constant错误。
解决方案说明
使用true作为@DynamoDBAutoGeneratedDefault的注解参数是完全正确的解决方法,原因如下:
true是原生boolean类型的字面量,属于标准编译期常量,符合注解入参要求- 你已经通过
@DynamoDBTyped指定了字段属性为BOOL类型,DynamoDB Mapper会自动将入参的boolean值映射为DynamoDB对应的布尔类型,不会出现类型不匹配问题
正确代码示例
@DynamoDBTyped(DynamoDBMapperFieldModel.DynamoDBAttributeType.BOOL) @DynamoDBAutoGeneratedDefault(true) private Boolean shouldProcess;
补充注意事项
该规则对所有
@DynamoDBAutoGeneratedDefault的入参都生效:所有入参都需要使用对应类型的字面量常量,不要传入包装类的静态常量(比如Boolean.FALSE、Integer.valueOf(0)等),否则都会触发相同的编译错误。
内容的提问来源于stack exchange,提问作者NP Rooski Z
相关产品推荐
相关产品推荐

