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 :

EmbeddedId et recherche partielle


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de MicroPuce
    Inscrit en
    Mai 2004
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 262
    Par défaut EmbeddedId et recherche partielle
    Hello tous le monde,
    Je dois mettre en place une page de recherche sur les éléments d'une base de données, jusque là, c'est classique
    Pour cela, j'utilise Hibernate (JPA2) et l'API criteria que je découvre.
    Le souci est que la plupart de mes tables ont des id composés (disons, col1 et col2) mais que ma recherche ne va porter que sur col2, par exemple.
    Mais du coups, comment je fais pour effectuer une recherche sur seulement 1 champ de mon EmbeddedId? C'est possible? Là, ch'uis un peu largué... Et j'ai peur que ça fasse du code un peu compliqué à développer (et à maintenir), sachant que les délais sont aussi très serré...
    En fait, je me demande si ça serait pas plus simple de passer par des native query? Je sais, c'est pas top

  2. #2
    Membre très actif
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 354
    Billets dans le blog
    1
    Par défaut
    un peu de code pour appuyer ta pensée... ça aiderais pour que ce sujet puisse avoir un [résolu]

  3. #3
    Membre confirmé Avatar de MicroPuce
    Inscrit en
    Mai 2004
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 262
    Par défaut
    Hello,
    Alors pour illustrer un peu, imaginez que j'ai une table personne, qui contient 3 colonnes: nom, prénom, date de naissance.
    Et que ma clé primaire, c'est nom+prénom... Arghhhh!!!
    Si on admet que nom+prenom sont effectivement uniques (c'est un exemple, hein ), ça ne pose pas vraiment de soucis, sauf que j'ai besoin de sélectionner toutes les personnes qui ont le même nom (ou prénom), donc, seulement une partie de la primary key (declarée en embeddedId dans mon entity), et là, je suis un peu perdu... Comment faire?

  4. #4
    Membre très actif
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 354
    Billets dans le blog
    1
    Par défaut
    L'exemple que tu choisi est vraiment plus que mauvais, mais je pense comprendre ce qui te tracasse qu'a cela ne tienne voici un exemple de la façon de créer une requête qui cherche les personnes qui ont le prénom donné en paramètre :

    je passe sous silence les setters/getters equals tostring hashcode toutes les annotations qui ne sont pas en rapport avec ta préoccupation

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import javax.persistence.*;
    import java.util.Date;
     
     
    @Embeddable
    public class PersonId {
        private String firstName;
        private String lastName;
        private Date dateOfBirth;
     
        public PersonId() {
        }
    }

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import javax.persistence.*;
     
    @Entity
    @NamedQueries(value = {
            @NamedQuery(name = "Person.findByFirstName", query = "select p from Person p where p.id.firstName = :firstName")
    })
    public class Person {
        @EmbeddedId
        private PersonId id;
     
        public Person() {
        }
    }

  5. #5
    Membre confirmé Avatar de MicroPuce
    Inscrit en
    Mai 2004
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 262
    Par défaut
    Merciiiiii, c'est exactement la syntaxe que je cherchais, d'ailleurs, j'aurais dû la trouver tout seul, parce que en y regardant de près, c'est tout de même très logique, c'est cette histoire de embeddedid qui me genait...

    Et sinon, je sais que mon exemple est très mauvais, mais c'est pas loin du design de la db que je dois reprendre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP 2007] Recherche partielle (*)
    Par rohstev dans le forum Développement Sharepoint
    Réponses: 2
    Dernier message: 03/12/2010, 17h31
  2. WebI recherche partiel
    Par psychosiffleur dans le forum Débuter
    Réponses: 4
    Dernier message: 26/05/2009, 08h57
  3. [Maintenance en cours] Recherche partiellement fonctionnelle
    Par Anomaly dans le forum Evolutions du club
    Réponses: 7
    Dernier message: 01/08/2007, 18h03
  4. [SQL] Requete avec recherche partiel
    Par benoît82 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/06/2007, 15h21
  5. recherche partielle dans une phrase
    Par devlopassion dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/05/2007, 12h20

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