web-dev-qa-db-ja.com

DynamoDbはブール値trueではなく値1を保存しています

特定のレコードに対してtrueのフラグ値を単純に格納するメソッドがあります。私のフラグ属性は、DynamoDBデータベースで値true/falseを持つブール値として定義されています。このメソッドの実行中、何らかの方法でtrue値を格納する代わりに、フラグ属性の新しい列を数値データ型として挿入し、trueではなく値1を書き込みます。デバッグ中は値を「true」として読み取っていることがわかりますが、推測を書き込んでいる間は、trueの場合は1、falseの場合は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;
   }
10
VSR

予想されることですが、dynamodbのデータ型ドキュメントをご覧ください: http://docs.aws.Amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.DataTypes.html

Java型のブール値は、数値型としてdynamodb、0または1に格納されます。または、@DynamoDBNativeBooleanTypeを使用してJava = BooleanからDynamoDBBOOLデータ型へ

6
Moe

DynamoDbは、デフォルトでブール値を0または1として保存します。

次のデコレータを使用して、属性をそれぞれfalseまたはtrueとして保存します。

@DynamoDBTyped(DynamoDBAttributeType.BOOL)
@DynamoDBAttribute
private boolean notificationFlag;

注意: @DynamoDBNativeBooleanこれを行っていたのは 非推奨

10
VKB