Как заставить Джексона (с помощью Spring) включить поле FetchType.LAZY, если оно аннотировано @JsonView? - PullRequest
0 голосов
/ 13 декабря 2018

Если у меня есть такой класс:

@Entity
@Table(name = "game")
public class Game {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "player_id")
    @JsonView(AdminView.View.class)
    private Player player;

    //other fields

}

Как заставить Спрингса и Джексона выбрать все поля (и только те поля), которые отмечены как @ManyToOne(fetch = FetchType.LAZY) и @JsonView(AdminView.View.class)перед сериализацией JSON обратно к клиенту, если клиент нажмет на контроллер @GetMapping, который также помечен аннотацией @JsonView(AdminView.View.class)?

Я не хочу использовать Hibernate5Module.Feature.FORCE_LAZY_LOADING, потому что это просто вызовет загрузкукаждое ленивое поле в каждом запросе, даже если оно не принадлежит соответствующему @JsonView.Могу ли я сделать эту принудительную загрузку более разумной, чтобы просто принудительно загружать поля, помеченные соответствующими @JsonView?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...