在使用AWS DynamoDBMapper的save方法时,如果抛出了DynamoDBMappingException: not supported; requires @DynamoDBTyped or @DynamoDBTypeConverted
异常,这是因为你在映射类的属性上没有正确使用@DynamoDBTyped
或@DynamoDBTypeConverted
注解。
解决方法如下:
@DynamoDBTable
注解,并指定了正确的表名。@DynamoDBTable(tableName = "your_table_name")
public class YourMappedClass {
// ...
}
@DynamoDBTyped
或@DynamoDBTypeConverted
注解。@DynamoDBTyped
注解,并指定一个自定义的类型转换器。@DynamoDBTyped(DynamoDBMapperFieldModel.DynamoDBAttributeType.M)`
@DynamoDBTypeConverted(converter = YourCustomTypeConverter.class)
private YourCustomType yourCustomType;
@DynamoDBTypeConverted
注解,并指定一个内置类型转换器。@DynamoDBTypeConverted(converter = YourBuiltInTypeConverter.class)
private String yourString;
DynamoDBTypeConverter
接口,并提供将属性类型转换为DynamoDB支持的类型的方法。public class YourCustomTypeConverter implements DynamoDBTypeConverter {
@Override
public String convert(YourCustomType object) {
// 将自定义类型转换为字符串类型
}
@Override
public YourCustomType unconvert(String object) {
// 将字符串类型转换为自定义类型
}
}
AWSCredentialsProvider credentialsProvider = new DefaultAWSCredentialsProviderChain();
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
.withCredentials(credentialsProvider)
.withRegion(Regions.US_EAST_1)
.build();
DynamoDBMapper mapper = new DynamoDBMapper(client);
通过按照上述步骤进行操作,应该能够成功保存映射类的实例到DynamoDB表中,而不再出现DynamoDBMappingException: not supported; requires @DynamoDBTyped or @DynamoDBTypeConverted
异常。