#java #amazon-web-services #amazon-dynamodb
#java #amazon-веб-сервисы #amazon-dynamodb
Вопрос:
Вот мой POJO, который я использую для хранения в DynamoDB с помощью DynamoDBMapper
@DynamoDBTable(tableName = "Data")
// @JsonIgnoreProperties(value = { "content" })
public class Data {
@DynamoDBRangeKey(attributeName = "Url")
@DynamoDBAutoGeneratedKey
@JsonProperty("url")
private String url;
@DynamoDBHashKey(attributeName = "UserName")
@JsonProperty("userName")
private String userName;
@JsonProperty("title")
@DynamoDBAttribute(attributeName = "Title")
private String pasteTitle;
@JsonProperty("content")
private String content;
@JsonProperty("date")
@DynamoDBAttribute(attributeName = "Date")
private String date;
}
Каждый раз, когда я запускаю DynamoDBMapper.save(data)
, оно content
также сохраняется, даже если у него нет DynamoDBAttribute
аннотации. При его использовании @JsonIgnoreProperties(value = { "content" })
значение становится равным нулю и содержимое не сохраняется. Но я хотел бы хранить содержимое в S3, а не в DynamoDB, и, следовательно, ищу способ игнорировать это в DynamoDBAttribute.
Комментарии:
1. Вы пробовали @jsonignore над свойством с именем content?
2. Да, я попробовал это, как вы можете видеть, я прокомментировал это в строке 2. Если я игнорирую его, оно возвращает нулевое значение, даже если я передаю значение for
content
в объекте json.3. На данный момент я решил проблему, установив значение
content
null после сохранения его в S3, чтобы оно не сохранялось в DynamoDB (поскольку DynamoDB очень дорогой).
Ответ №1:
Вы можете использовать @DynamoDBIgnore
— Документация AWS
В вашем примере:
@DynamoDBIgnore
public String getContent() {
return content;
}