Spring Data Rest не обновляет значение по умолчанию в БД - PullRequest
1 голос
/ 20 сентября 2019

У меня есть приложение Spring Boot, использующее Spring Data REST.У меня есть сущность домена под названием User с логическим полем isTeacher.Это поле уже настроено нашим администратором базы данных в таблице User с типом bit и значением по умолчанию 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;

}

и хранилищем User:

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

Я смог добавить нового пользователя, задав следующий запрос и POST для http://localhost:8080/users,, в БД был создан новый пользователь со значением isTeacher 1:

{ 
    "isTeacher" : true
}

Однако, когдаЯ попытался изменить IS_TEACHER, указав PATCH (или PUT) и запрос:

{ 
    "isTeacher" : false
}

Ответ показал, что «isTeacher» по-прежнему равен true, и значение в таблице также не изменилось.Может кто-нибудь, пожалуйста, дайте мне знать, почему это происходит?

1 Ответ

2 голосов
/ 20 сентября 2019

Проблема связана с тем, что @Data аннотация lombok игнорируется, если у вас есть поле, начинающееся с isXx, оно генерирует геттеры и сеттеры для логического значения с isTeacher для геттеров и setTeacher для сеттеров, тогда вы не можетеобновите правильно ваше свойство, если вы поставили "teacher", когда обновление должно работать, но вы должны решить эту проблему, переопределив этот установщик.

@Setter(AccessLevel.NONE) private boolean isTeacher;

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