J'ai un schéma de base de données avec 3 entités : User, Profile et UserProfile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
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;
}
Mon flux JSON retourné par un select est le suivant :
{ "id": 1, ....... "profiles": [ { "profile": { "id": 1, ..... }, { "id": 2, ..... } } ] }

J'ai 3 questions :
Est-il possible d'enlever l'attribut profile et d'avoir ceci : { "id": 1, ....... "profiles": [ { "id": 1, ..... }, { ": 2, ..... } ] }

Dans la cas d'un update, cela va-t-il fonctionner car là le flux json me retourne pas mon id qui est dans UserProfile

Est-ce bien comme cela qu'il faut faire pour une relation manyToMany avec un id comme clé primaire dans la table de relation