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

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
        },
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
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; 
}
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
 
@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; 
}
j'ai essayé pour profil et fonctionnalité le mode : FetchType.EAGER, même résultat !


controller
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
fonctionnaliteDao.findAll(spec, pageable);
j'ai aussi essayé (en mode LAZY) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
fonctionnaliteDao.findAll(spec, pageable);
fonctionnalitePage.getContent().forEach(f -> f.getProfils());