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;
}
我有一个 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;
}