Почему не инициализируются поля сущности в Spring?

Есть сущность Book с методом isValid.

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "books")
public class Book implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(length = 50, nullable = false)
    private String title;

    @Column(length = 50, nullable = false)
    private String author;

    @Column(length = 50, nullable = false)
    private String genre;

    @Column(nullable = false)
    private String description;

    @Column
    private int available;

    public static boolean isValidate(@NotNull Book book) {
        return Valids.textIsValid(book.title);
    }
}

Её имена совпадают с именами колонок в таблице. При использовании этого метода контроллером, поля аргумента (объекта Book) почему-то пусты, хотя по отладке видно, что внутри присутствует некий hibernate interceptor, в поле target которого все необходимые данные есть. Скрин с полученным объектом во время отладки Дополнительное поле target-поле того же объекта

С null полями работать соответственно не получается. В чём ошибка и как это можно исправить? Заранее спасибо.


Ответы (1 шт):

Автор решения: Maxim Grankin

У нас возникла аналогичная проблема, если у вас используется ModelMapper, то возможно это может помочь: https://github.com/modelmapper/modelmapper/issues/442

В нашем случае просто помог апгрейд на версию 2.3.3

Также возможно ваша проблема решается просто получением через getter'ы, нежели прямое обращение к полям

→ Ссылка