Установите запрещенные поля в Spring Data Rest
Я хочу исключить определенные поля из POST в мои репозитории.
Например, я хочу установить версию самостоятельно, чтобы пользователи не могли установить это поле самостоятельно.
Например, в классе ниже.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@CreatedDate
private LocalDateTime created;
@LastModifiedDate
private LocalDateTime lastModified;
private String name;
}
Я пытался использовать @ReadOnlyProperty
аннотации и не имея установщика для поля версии. Но ничего не получалось, пользователи все еще могут сами устанавливать поля версий. Я также попытался реализовать глобальный инициализатор, как показано ниже, но безуспешно. Связыватель подобран хотя.
@ControllerAdvice
public class GlobalInitializer {
@InitBinder
public void globalBinder(WebDataBinder webDataBinder) {
webDataBinder.setDisallowedFields("name");
}
}
1 ответ
Решение
Вы должны поместить @JsonIgnore в поле и в сеттер, а @JsonProperty("propertyName") в геттер.
Только что проверил - у меня работает:
@JsonIgnore
@LastModifiedDate
private LocalDate lastUpdated;
@JsonProperty("lastUpdated")
public LocalDate getLastUpdated() {
return lastUpdated;
}
@JsonIgnore
public void setLastUpdated(LocalDate lastUpdated) {
this.lastUpdated = lastUpdated;
}