Как игнорировать свойство JsonProperty, которое будет сохранено в DynamoDB

#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;
    }