Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Différences de gestion des chaînes entre les versions 1 et 2 du SDK for Java
Les versions V1 et V2 traitent différemment les chaînes vides lors de l'envoi de données vers DynamoDB :
-
V1 : Convertit les chaînes vides en valeurs nulles avant de les envoyer à DynamoDB (aucun attribut n'est donc créé)
-
V2 : envoie des chaînes vides sous forme de valeurs de chaînes vides réelles à DynamoDB
Important
Après la migration vers la version V2, si vous ne souhaitez pas que des chaînes vides soient stockées dans DynamoDB, vous devez implémenter des convertisseurs personnalisés. Sans convertisseurs personnalisés, la V2 stocke les chaînes vides en tant qu'attributs de chaînes vides réels dans vos éléments DynamoDB, ce qui est différent du comportement de la V1 qui consiste à omettre complètement ces attributs.
Exemple convertisseur personnalisé pour V2 qui convertit un attribut de chaîne vide en null
/** * Custom converter that maintains V1 behavior by converting empty strings to null values * when writing to DynamoDB, ensuring compatibility with existing data. No attribute will be saved to DynamoDB. */ public class NullifyEmptyStringConverter implements AttributeConverter<String> { @Override public AttributeValue transformFrom(String value) { if (value == null || value.isEmpty()) { return AttributeValue.builder().nul(true).build(); } return AttributeValue.builder().s(value).build(); } @Override public String transformTo(AttributeValue attributeValue) { if (attributeValue.nul()) { return null; } return attributeValue.s(); } @Override public EnhancedType<String> type() { return EnhancedType.of(String.class); } @Override public AttributeValueType attributeValueType() { return AttributeValueType.S; } } // V2 usage: @DynamoDbBean public class Customer { private String name; @DynamoDbConvertedBy(NullifyEmptyStringConverter.class) public String getName() { return name; } }