Как выбрать, какие свойства будут обновляться в операции PATCH из Spring-data-rest? - PullRequest
1 голос
/ 09 января 2020

Допустим, у меня есть класс Person:

class Person{ 
  private String id; 
  private String name; 
  private Date creationDate;
}

Используя упор данных пружины, я могу установить эту сущность как:

http://resourcehost/people/personId

С телом петиции json:

{
  "name":"Jon Smith",
  "creationDate":"2020-08-01 00:00:00"
}

Я хочу, чтобы мой клиент мог обновить имя, но я не хочу, чтобы потребитель обновлял поле creationDate .

Как настроить, нужно ли обновлять свойства с помощью операции PATCH?

Я использую загрузочные статтеры Spring версии 2.2.2.RELEASE

1 Ответ

1 голос
/ 20 января 2020

Вы можете игнорировать обновления указанного поля c объекта в запросе PATCH, пометив его как @JsonProperty(access = JsonProperty.Access.READ_ONLY), как это было сделано в следующем классе.

@MappedSuperclass
public abstract class ModelBase implements Serializable {
    @Column(name = "creation_time")
    @CreatedDate
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    private LocalDateTime creationTime;

    @Column(name = "modified_time")
    @LastModifiedDate
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    private LocalDateTime modifiedTime;
}

Spring Data REST не сгенерирует исключение, он просто проигнорирует поле. Используя Проекции , вы сможете игнорировать это поведение.

...