我想将某些字段从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;
}

07-26 07:15