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:
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 //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 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 //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
J'ai un résultat qui est pas mal, dans mon json :
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
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 ...
Partager