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

JPA Java Discussion :

JPA - reqûete dynamique


Sujet :

JPA Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 78
    Points : 45
    Points
    45
    Par défaut JPA - reqûete dynamique
    Bonjour à tous,

    Je cherche à rendre une requête dynamique, je m'explique :

    J'arrive à récupérer une donnée bien précise comme ceci :
    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
     
    package com.mc.appcontacts.repository;
     
    import java.util.List;
     
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.query.Param;
     
    import com.mc.appcontacts.domain.hibernate.Contact;
     
    public interface ContactRepository extends JpaRepository<Contact, Integer> {
     
    	List<Contact> findByid(int id);
     
    	List<Contact> findByname(String name);
     
    	/**
         * Finds a person by using the last name as a search criteria.
         * @param lastName
         * @return  A list of persons whose last name is an exact match with the given last name.
         *          If no persons is found, this method returns an empty list.
         */
        @Query("SELECT c.phoneNumber FROM Contact c WHERE LOWER(c.name) = LOWER(:name)")
        public String find(@Param("name") String name);
     
     
    }
    je récupére bien le numéro de téléphone de mon contact passé en paramètre.

    Mais est il possible de passer la donnée que je veux récupérer (ici le téléphone) en paramètre ??

    Ou alors suis je obligé de créer autant de requête que d'informations possible à récupérer : une requête pour récupérer le numéro de tél, une autre pour l'adresse mail, etc...

    Merci de votre aide

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    tu peux tout recuperer, cela depend de ce que tu mets dans ta requete.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT c.phoneNumber, c.name FROM Contact c WHERE LOWER(c.name) = LOWER(:name)
    ou je n´ai pas bien compris ta question.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 78
    Points : 45
    Points
    45
    Par défaut
    salut

    désolé de répondre si tard ....


    en fait je cherche à savoir si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT c.phoneNumber FROM Contact c WHERE LOWER(c.name) = LOWER(:name)
    peut devenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String att = "phoneNumber";
    ...
    puis
     
    SELECT c.att FROM Contact c WHERE LOWER(c.name) = LOWER(:name)
    Apparemment j'ai lu qu'il fallait utiliser JPQL pour constituer soi même sa requête à partir de variables...

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Bonjour,

    C'est une mauvaise approche de vouloir récupérer les données unitairement ! A terme tu va avoir de gros problème de performance.
    Soit tu récupères les informations utile comme te la suggéré jeffray03
    Soit tu récupères le contact complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT c FROM Contact c WHERE LOWER(c.name) = LOWER(:name)
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. JPA: requette JPQL dynamique
    Par helloct dans le forum JPA
    Réponses: 4
    Dernier message: 10/05/2013, 14h46
  2. Réponses: 8
    Dernier message: 25/03/2011, 22h37
  3. [JPA] Formulaire dynamique
    Par Trelazeen dans le forum Struts 2
    Réponses: 9
    Dernier message: 10/06/2009, 11h17
  4. Réponses: 4
    Dernier message: 13/05/2002, 16h43
  5. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

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