@JsonManagedReference и @JsonBackReference не могут получить данные отношения из модели jsonbackreference - PullRequest
2 голосов
/ 06 января 2020

У меня есть отношение от пользователя и роли, где у роли есть отношение "один ко многим", а у пользователя есть отношение "многие к одному" со столбцом "role_id"

когда я использую отношение при весенней загрузке, я получаю бесконечное число l oop данных, когда я использую @OneToMany и @ManyToOne, поэтому я ищу и получаю @JsonManagedReference и @JsonBackRefence. это решило мою проблему для inifinite l oop.

, но когда я использую @JsonManagedReference (для роли) и @JsonBackRefence (для пользователя), для подражания, которые работают с тем, что я хочу. как этот снимок экрана:

enter image description here

, но в пользовательской модели нет данных о ролях, как этот снимок экрана enter image description here

что я хочу, это когда я получаю данные роли так же, как я хочу (1 снимок экрана), и когда я получаю данные от пользователя, я хочу получить данные, подобные этому снимку экрана: enter image description here

это мой пример для подражания:

public class Role {
/*
    another data
*/
   @JsonManagedReference(value = "user-role")
   @OneToMany(
           cascade = CascadeType.ALL,
           mappedBy = "role"
   )
   private List<User> users = new ArrayList<>();
}

и моя модель для пользователя:

public class User {
   /*
      another data
   */
   @JsonBackReference(value = "user-role")
   @ManyToOne
   @JoinColumn(name="role_id")
   @OnDelete(action = OnDeleteAction.CASCADE)
   private Role role;
}

Я много раз искал в stackoverflow и на других веб-сайтах, но я не нашел ни одного Решение, вы можете помочь мне решить мою проблему, большое спасибо.

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Вам нужно добавить аннотацию наоборот

@JsonManagedReference(for User) and @JsonBackRefence(for Role)

, короче говоря, @JsonBackRefence будет игнорироваться, когда-либо добавлялись.

Вы можете сослаться на это подробнее

Или посмотрите Демо здесь с различными вариантами использования.

0 голосов
/ 06 января 2020

Похоже, вы не предоставляете значение @JsonManagedReference

Попробуйте сделать это:

@JsonManagedReference(value = "user-role")

и

@JsonBackReference(value = "user-role")

Чтобы точно указать, какие ссылка должна быть управляемой.

...