我想将某些字段从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");
}
}
最佳答案
您应该将@JsonIgnore放在字段和setter上,并将@JsonProperty(“ propertyName”)放在getter上。
刚刚测试-对我有用:
@JsonIgnore
@LastModifiedDate
private LocalDate lastUpdated;
@JsonProperty("lastUpdated")
public LocalDate getLastUpdated() {
return lastUpdated;
}
@JsonIgnore
public void setLastUpdated(LocalDate lastUpdated) {
this.lastUpdated = lastUpdated;
}