DynamoDBMapper conditionnelle sauve
Je suis en utilisant DynamoDBMapper et voudrais conditionnellement enregistrer si et seulement si le hashkey et la gamme de combinaison de touche n'existe pas. Je sais qu'il existe des façons d'utiliser les Uuid afin de réduire la possibilité d'une collision, mais je tiens à me protéger en utilisant conditionnelle sauve.
Je suis tombé sur cet article qui utilise DynamoDBSaveExpression cependant, je ne suis pas en mesure de préciser que la condition est "hashkey ET rangekey" ne peut pas exister. Le API spécifie un withConditionalOperator
méthode, mais je ne suis pas en mesure de voir ça dans ma classe. Je suis en utilisant la dernière aws sdk java aussi de ici.
Des suggestions sur la façon conditionnelle, enregistrer? Ou ce que j'ai peut-être tort?
OriginalL'auteur n00b | 2015-01-22
Vous devez vous connecter pour publier un commentaire.
Il utilise le
public ExpectedAttributeValue(Boolean exists)
constructeur, qui appelle en internesetExists
.C'est que setConditionalOperator nécessaire? N'est-il pas par défaut afin de valider l'ensemble de l'état?
Trouvé! "Si vous omettez ConditionalOperator, alors ET est la valeur par défaut." a partir de là, en vertu de l'opérateur conditionnel article: docs.aws.amazon.com/amazondynamodb/latest/APIReference/...
Je tente la même chose et il ne fonctionne pas pour moi. Dans mon cas, ils ne sont pas hashKey et rangeKey mais sur des attributs différents. Pourriez-vous s'il vous plaît aider moi.
J'ai un doute - pourquoi les utiliser ET, plutôt que de OU? Ne devrait-elle pas être: (hashKey n'existe pas) OU (rangeKey n'existe pas)? [Ref - docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/... ]
OriginalL'auteur mkobit