Bonsoir à tous,

alors ce sujet est une continuité de https://www.developpez.net/forums/d2...nytomany-meme/

Mais, elle est légèrement différentes car nous n'avons plus de ManyToMany ...
J'ai désormais ceci :

La classe ChoixId qui sert à schématiser la clé composite:
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
 
//Classe servant à créer la clé composite de la table choix
@Embeddable
public class ChoixId implements Serializable {
 
    //Représentation de la clé composite
 
    // Liste des id des chapitres suivants possibles
    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(foreignKey=@ForeignKey(name="choix_chapitre_suivant_fk")) //utilisation de la contrainte de la base
    private Chapitre suivant;
 
    // Liste des id des chapitres menants au chapitre en court
    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(foreignKey=@ForeignKey(name="choix_chapitre_origine_fk")) //utilisation de la contrainte de la base
    private Chapitre origine;
 
    /////////////Fin de la clé composite
}
La classe Choix qui schématise ce qui reste de la table dans la BDD :
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
 
//Classe modélisant la table choix pour une utilisation du ManyToMany retravaillée
@Entity
@Table(name = "choix")
@AssociationOverrides({ //ATTENTION !!! cette ensemble est indispensable pour faire la clé composite (ce qui permet ensuite d'afficher le nomchoix)
        @AssociationOverride(name = "id.origine",
                joinColumns = @JoinColumn(name = "chap_origine")),
        @AssociationOverride(name = "id.suivant",
                joinColumns = @JoinColumn(name = "chap_suivant")) })
public class Choix {
 
    //clé composite => qui est représentée dans la classe ChoixId
    @EmbeddedId
    private ChoixId id = new ChoixId();
 
    //attribut supplémentaire de la table
    @Column(name = "choix_nom")
    private String nomChoix;
 
 
    //////////////////////////////////////////////
    //les getter/setter
La classe chapitre
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
39
 
 
@Entity
@Table(name = "chapitre")
public class Chapitre implements Serializable {
 
    @Id
    @Column(name = "chap_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
 
    @Column(name = "chap_titre")
    private String titre;
 
    @Column(name = "chap_type")
    private String type;
 
    //liaison avec livre
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "livre_id")
    private Livre livre;
 
 
    //Zone pour relation ManyToMany retravaillé
    //(pour récupérer l'attribut choix_nom plus tard dans la table choix)
 
    // Liste des chapitres suivants possibles => on utilise l'id du chapitre en court pour trouver les choix suivants
    @OneToMany(mappedBy = "id.origine", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private Set<Choix> suivants = new HashSet<Choix>();
 
//    //Commenté car non utile actuellement
//    // Liste des chapitres menants à ce chapitre
//    @OneToMany(mappedBy = "id.suivant", cascade = CascadeType.ALL)
//    private Set<Choix> origines = new HashSet<Choix>();
 
    /////////////////Fin de la zone retravaillé
 
//////////////////////////////////////
    //les getter/setter
J'ai un résultat qui est pas mal, dans mon json :
Nom : chapitre_suivant.png
Affichages : 139
Taille : 9,7 Ko

Mais j'ai juste un problème => id : {}

Je devrais pouvoir récupérer l'id du chapitre qui est présent dans la table. Mais il semblerait qu'il s'agisse de l'objet entier.

J'arrive pas à mettre la main sur cet id ?

Une petite idée ? ou un suggestion ?

Ca fait 2 semaines que je suis dessus maintenant, j'aimerai bien réussir à trouver une solution ...