Bonjour,
tout d'abord, j'explique mon schéma de base
table groupe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
idgroupe (primary key)
nomgroupe
photogroupe
table genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
idgenre(primary key)
nomgenre
table groupegenre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
id (primarykey)
idgroupe
idgenre
En gros, un groupe peut avoir plusieurs genres.

Voici mon entité java:

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;
	}
 
}
quand j'insère un groupe, ça insére correctement la table groupegenre avec les id corrects.

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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
int idgenre
String nom
avec les setter et getter
Il faut savoir que lorsque je passe genreQuery à la méthode getAllGroup.
je crée un objet genre

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)
j'espère que mon explication est assez clair