Spring 数据剩余不更新数据库中的默认值

Spring Data Rest Does Not Update Default Value in DB

我有一个 Spring 使用 Spring Data REST 的启动应用程序。我有一个名为 User 的域实体,它有一个布尔字段 isTeacher。此字段已由我们的 DBA 在用户 table 中设置,类型为位,默认值为 1:

@Data
@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;  // This Id has been setup as auto generated in DB

    @Column(name = "IS_TEACHER")
    private boolean isTeacher;

}

以及用户存储库:

public interface UserRepository extends CrudRepository<User, Long>{
}

我能够通过向 http://localhost:8080/users 提供以下请求和 POST 添加新用户,在 isTeacher 值 1 的数据库中创建了一个新用户:

{ 
    "isTeacher" : true
}

但是,当我尝试通过提供 PATCH(或 PUT)和此请求来更改 IS_TEACHER 时:

{ 
    "isTeacher" : false
}

响应显示 "isTeacher" 仍然为真,并且 table 中的值也没有改变。有人可以告诉我为什么会这样吗?

问题是由于 @Data lombok 的注释被忽略,如果你有一个以 isXx 开头的字段,它会生成 getters 和 setters 布尔值isTeacher for getters and setTeacher for setters 那么你不能正确更新你的 属性,如果你在更新应该工作时放置 "teacher" 但你应该通过覆盖 [=17] 来解决这个问题=].

@Setter(AccessLevel.NONE) private boolean isTeacher;

public void setIsTeacher(boolean isTeacher) {
    this.isTeacher = isTeacher;
}