我有一个方法,它只是为特定记录存储标志值 true。我的标志属性已定义为 boolean 值,在我的 DynamoDB 数据库中具有值 true/false。 在运行此方法时,它不是以某种方式存储真值,而是为标志属性插入一个新列作为数字数据类型,并写入值 1 而不是 true。在调试时我可以看到它读取的值是“真”,但在写我的猜测时它用 1 表示真,用 0 表示假,因此写 1。
public static ArrayList<UserWishListBuks> removeNotification(int Statusid) {
AmazonDynamoDBClient ddb = NavigationDrawerActivity.clientManager
.ddb();
DynamoDBMapper mapper = new DynamoDBMapper(ddb);
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
Boolean value = true;
try{
PaginatedScanList<UserWishListBuks> result = mapper.scan(
UserWishListBuks.class, scanExpression);
for (UserWishListBuks bre : result) {
if( (bre.getBOOK_STATUS_ID()==(Statusid)) )
{
bre.setNOTIFICATION_FLAG(true);
mapper.save(bre);
}
}
}catch (AmazonServiceException ex) {
NavigationDrawerActivity.clientManager
.wipeCredentialsOnAuthError(ex);
}
return null;
}
最佳答案
DynamoDb 默认将 boolean 值存储为 0 或 1。
使用以下装饰器将属性分别保存为 false
或 true
。
@DynamoDBTyped(DynamoDBAttributeType.BOOL)
@DynamoDBAttribute
private boolean notificationFlag;
注意:用于执行此操作的@DynamoDBNativeBoolean
是deprecated
关于java - DynamoDb 正在存储值 1 而不是 boolean 值 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47446171/