Есть ли что-то вроде @JsonIgnore для игнорирования на уровне Rest Controller? - PullRequest
0 голосов
/ 27 февраля 2020
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private BigInteger id;
    private String name;
    private String lastName;

    @ManyToOne
    @JoinColumn(name="subscription_id",nullable = false)
    private Subscription subscription;

.

public class Subscription {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private BigInteger id;
    private String type;
    private double price;
    private Date payDate;

    @OneToMany(mappedBy = "subscription", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JsonIgnore
    private List<User> users = new ArrayList<User>();

У меня есть класс пользователя, связанный с классом подписки, я проигнорировал список пользователей на уровне подписки.

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

С уважением.

1 Ответ

0 голосов
/ 27 февраля 2020

Есть два подхода. Во-первых, вы можете создать DTO (объект передачи данных), содержащий только те элементы, которые вы хотите передать для этой конкретной конечной точки. Это является обязательным требованием в средах с высокой степенью безопасности, потому что нет никаких шансов, что кто-нибудь позже добавит чувствительное поле и забудет об этом в JSON. Поскольку DTA специально предназначен для этого ресурса (и часто является просто классом stati c внутри него), то нет никаких шансов, что он получит что-то нежелательное позже.

Другой подход заключается в создании пользовательского сериализатора. См. Как использовать пользовательский сериализатор с Джексоном?

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