JPA сериализует Entyy - PullRequest
       15

JPA сериализует Entyy

0 голосов
/ 26 декабря 2018

У меня есть модель данных, которая содержит 3 таблицы: User, Profile, UserProfile.

public class User implements Serializable {

 private Integer id;
 ......

 @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = 
 FetchType.LAZY)
 @JsonManagedReference
 @JsonProperty("profiles")
 private List<UserProfile> userProfiles = new ArrayList<UserProfile>();

}

public class Profile implements Serializable {
 private Integer id;
 ......

 @OneToMany(mappedBy="profile", cascade = CascadeType.ALL,  fetch = 
 FetchType.LAZY)
 @JsonBackReference
 private List<UserProfile> userProfiles= new ArrayList<UserProfile>();

}

public class UserProfile implements Serializable {
 private Integer id;

 @ManyToOne
 @JoinColumn(name = "idUser")
 @JsonBackReference
 private User user;

 @ManyToOne
 @JoinColumn(name = "idProfile")
 @JsonManagedReference
 private Profile profile;
}

И вот моя обратная связь json:

{"id": 1, ....... "profile": [{"profile": {"id": 1, .....}, {"id": 2, .....}}]}

У меня два вопроса: можно ли удалить атрибут профиля и иметь: {"id": 1, ....... "анкеты": [{"id": 1, .....},{": 2, .....}]}

Во многих отношениях с промежуточной таблицей, содержащей первичный ключ (id), 2 внешних ключа, которые являются идентификаторами 2 таблиц, которые имеютмногие отношения, это как это сделать?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Еще раз проверил ваш код.У вашего кода есть проблемы.Вам нужно только 2 объекта: User и Profile.И просто добавьте к ним @ManyToMany отношение.Полный образец см. Здесь ManyToMany https://vladmihalcea.com/the-best-way-to-use-the-manytomany-annotation-with-jpa-and-hibernate/

0 голосов
/ 27 декабря 2018

Для 1-го вопроса, чтобы скрыть атрибут profile, есть 2 варианта: 1. Если вам не нужен какой-либо вывод json, вы можете добавить к нему аннотацию @JsonIgnore;2. Если вам это нужно в другом месте, но вы не хотите здесь, вы можете использовать Projection.Проверьте https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections и https://www.baeldung.com/spring-data-rest-projections-excerpts для справки о том, как использовать прогнозы.

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