Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
String menangani perbedaan antara versi 1 dan versi 2 dari SDK for Java
V1 dan V2 menangani string kosong secara berbeda saat mengirim data ke DynamoDB:
-
V1: Mengkonversi string kosong ke nilai null sebelum mengirim ke DynamoDB (menghasilkan tidak ada atribut)
-
V2: Mengirim string kosong sebagai nilai string kosong aktual ke DynamoDB
penting
Setelah bermigrasi ke V2, jika Anda tidak ingin string kosong disimpan di DynamoDB, Anda harus menerapkan konverter khusus. Tanpa konverter khusus, V2 menyimpan string kosong sebagai atribut string kosong yang sebenarnya di item DynamoDB Anda, yang berbeda dari perilaku V1 menghilangkan atribut ini sepenuhnya.
contoh konverter khusus untuk V2 yang mengubah atribut string kosong menjadi 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; } }