Bonjour,
tout d'abord, j'explique mon schéma de base
table groupe
table genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 idgroupe (primary key) nomgroupe photogroupe
table groupegenre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 idgenre(primary key) nomgenre
En gros, un groupe peut avoir plusieurs genres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 id (primarykey) idgroupe idgenre
Voici mon entité java:
quand j'insère un groupe, ça insére correctement la table groupegenre avec les id corrects.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 @Entity public class Groupe implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private int idgroupe; private String nom; private String photo; private String email; @Lob private String valide; @Lob private String informations; private static final long serialVersionUID = 1L; public Groupe() { super(); groupeGenre = new ArrayList<Genre>(); } public int getIdgroupe() { return this.idgroupe; } public void setIdgroupe(int idgroupe) { this.idgroupe = idgroupe; } public String getNom() { return this.nom; } public void setNom(String nom) { this.nom = nom; } public String getPhoto() { return this.photo; } public void setPhoto(String photo) { this.photo = photo; } public String getEmail() { return this.email; } public void setEmail(String email) { this.email = email; } public String getValide() { return this.valide; } public void setValide(String valide) { this.valide = valide; } public String getInformations() { return this.informations; } public void setInformations(String informations) { this.informations = informations; } @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinTable (name="groupegenre", joinColumns={@JoinColumn(name="idgroupe")}, inverseJoinColumns=@JoinColumn (name="idgenre")) private List<Genre> groupeGenre; public List<Genre> getGenre(){ return this.groupeGenre; } public void setGenre(List<Genre> listGenre){ this.groupeGenre = listGenre; } }
Maintenant je souhaite faire la requête suivante :
Récupérer tous les groupes ayant comme genre X passé en paramètre d'une fonction.
En gros :
j'ai une méthode getAllGroupe(Genre genreQuery)
J'ai dans mon entité List<Genre> groupeGenre
ce que j'ai testé c'est une requête avec
em.query("select g from Groupe g where :params in groupegenre")
em.setParameter(params,genreQuery)
Je suis pas si sur de la syntaxe car je suis pas sur mon pc perso.
Mais je sais que la requête est bonne mais il me retourne tous les éléments de groupe et non les éléments qui ont comme genre genreQuery.
l'entité genre est pas compliqué
c'est un
Il faut savoir que lorsque je passe genreQuery à la méthode getAllGroup.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4int idgenre String nom avec les setter et getter
je crée un objet genre
j'espère que mon explication est assez clair
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Genre g = new Genre() g.setNom(request.getParameter("genre")) je recupère ensuite l'id du genre de la base car ils sont connu. donc g.setId(numero) ensuite getAllGroupe(g)
Partager