IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Persistance des données Java Discussion :

problème requete jpql


Sujet :

Persistance des données Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Points : 117
    Points
    117
    Par défaut problème requete jpql
    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

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    C'est normal que dans ton objet Groupe tu récupères tous les objets Genre référencés (c'est la définition du mapping qui le veut).
    Ce que tu cherches à faire, c'est plutôt un filtre sur le Set de Genre, ça ne se fait pas via une requête comme la tienne. La chose correcte, c'est que tu ne récupères que les Groupe qui ont le Genre passé en paramètre mais pour le filtre, il faudrait plutôt le faire dans la couche IHM.

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Points : 117
    Points
    117
    Par défaut
    Ce soir, je vais tester le truc suivant :
    Dans mon ejb:
    Je récupère tous les groupes.
    sachant que pour chaque groupe, on a une liste de "Genre".

    Dans ma page jsp, j'affiche une liste de genre "rock", "jazz" .....
    Je récupère les groupes à l'aide de l'ejb
    quand je clique sur rock, je teste pour chaque groupe récupéré si le genre choisi est dans la liste des genres, si oui, j'affiche le groupe.

    a+ et merci

Discussions similaires

  1. requete JPQL avec un problème de OUTER JOIN
    Par flamant dans le forum JPA
    Réponses: 0
    Dernier message: 28/12/2012, 11h33
  2. Problème requete update
    Par krfa1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/03/2005, 08h47
  3. Problème requete SQL
    Par tonyskn dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/11/2004, 20h37
  4. problème requete sql
    Par Fred- dans le forum ASP
    Réponses: 2
    Dernier message: 13/06/2004, 02h20
  5. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo