Spring 2.5.6
Bonjour,
J'ai mis en place manyToMany bidirectionnel, seulement un seul coté récupère les données mappés.
/profils
j'ai bien des fonctionnalités dans profil
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 { "id": 1, // profil "code": "CODEP1", "label": "defautP1", "description": "description defautP1", "fonctionnalites": [ { "id": 3, // fonctionnalité "code": "codeF3", "label": "labelF3", "description": "descriptionF3", "profils": null }, { "id": 1, // fonctionnalité "code": "codeF1", "label": "labelF1", "description": "descriptionF1", "profils": null } ] },
/fonctionnalites
Profil
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [ { "id": 1, // fonctionnalités "code": "codeF1", "label": "labelF1", "description": "descriptionF1", "profils": null // est toujours à NULL // il doit y avoir profil dont id = 1 },
Fonctionnalité
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 @Entity @Getter @Setter @NoArgsConstructor @AllArgsConstructor @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id") @Table(name = "t_profil") public class Profil { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_profil") @SequenceGenerator(name = "seq_profil", sequenceName = "seq_profil", allocationSize = 1) Long id; @Column(name = "code") String code; @Column(name = "label") String label; @Column(name = "description") String description; @ManyToMany(cascade = { CascadeType.ALL, }, fetch = FetchType.LAZY) @JoinTable( name = "t_profils_fonctionnalites", joinColumns = { @JoinColumn(name = "profil_id") }, inverseJoinColumns = { @JoinColumn(name = "fonctionnalite_id") } ) public Set<Fonctionnalite> fonctionnalites; }
j'ai essayé pour profil et fonctionnalité le mode : FetchType.EAGER, même résultat !
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 @Entity @Getter @Setter @NoArgsConstructor @AllArgsConstructor @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id") @Table(name = "t_fonctionnalite") public class Fonctionnalite { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_fonctionnalite") @SequenceGenerator(name = "seq_fonctionnalite", sequenceName = "seq_fonctionnalite", allocationSize = 1) Long id; @Column(name = "code") String code; @Column(name = "label") String label; @Column(name = "description") String description; //@JsonIgnore @ManyToMany(mappedBy = "fonctionnalites", fetch = FetchType.LAZY, cascade = { CascadeType.ALL, }) Set<Profil> profils; }
controller
j'ai aussi essayé (en mode LAZY) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fonctionnaliteDao.findAll(spec, pageable);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 fonctionnaliteDao.findAll(spec, pageable); fonctionnalitePage.getContent().forEach(f -> f.getProfils());
Partager