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 :

jointure entre deux tables


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut jointure entre deux tables
    bonjour;
    j'essaie de faire un jointure entre deux table contact et personne selon l'attribut firstname mais cela ne fonctionnait pas:

    voila ma classe contact
    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
    package com.labosun.cj.ejb3.entity;
     
    import java.io.Serializable;
     
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToOne;
     
    /**
    * Entity Bean Contact
    * @author Cyril
    *
    */
    @Entity // Annotation indiquant que la classe est un entity bean
    public class Contact implements Serializable{
     
    private int id;
     
    private String firstname;
     
    private String lastname;
     
    private String address;
     
    private int zipCode;
     
    private String city;
     
    private String phone;
     
    private String mobile;
     
    private Personne personne;
     
    @OneToOne
    @JoinColumn(referencedColumnName="FIRSTNAME")
     
    public Personne getPersonne() {
    return personne;
    }
     
    public void setPersonne(Personne personne) {
    this.personne = personne;
    }
     
    public Contact() {
    }
     
    @Id // tag d�finissant la cl� primaire
    @GeneratedValue(strategy=GenerationType.AUTO) // tag indiquant que la cl� est auto g�n�r�e
    public int getId() {
    return id;
    }
     
    public void setId(int id) {
    this.id = id;
    }
     
    public String getAddress() {
    return address;
    }
     
    public void setAddress(String address) {
    this.address = address;
    }
     
    public String getCity() {
    return city;
    }
     
    public void setCity(String city) {
    this.city = city;
    }
     
    public String getFirstname() {
    return firstname;
    }
     
    public void setFirstname(String firstname) {
    this.firstname = firstname;
    }
     
    public String getLastname() {
    return lastname;
    }
     
    public void setLastname(String lastname) {
    this.lastname = lastname;
    }
     
    public String getMobile() {
    return mobile;
    }
     
    public void setMobile(String mobile) {
    this.mobile = mobile;
    }
     
    public String getPhone() {
    return phone;
    }
     
    public void setPhone(String phone) {
    this.phone = phone;
    }
     
    public int getZipCode() {
    return zipCode;
    }
     
    public void setZipCode(int zipCode) {
    this.zipCode = zipCode;
    }
     
    }
    et voila ma classe personne
    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
     
    package com.labosun.cj.ejb3.entity;
    import java.io.Serializable;
     
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToOne;
     
     
    /**
    * Entity Bean Contact
    * @author Cyril
    *
    */
    @Entity // Annotation indiquant que la classe est un entity bean
    public class Personne implements Serializable{
     
    	private int id;
    	private String firstname;
    	private String lastname;
    	private Contact contact;
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
     
    public int getId() {
    return id;
    }
     
    public void setId(int id) {
    this.id = id;
    }
    @OneToOne(mappedBy="personne")
    public Contact getContact() {
    	return contact;
    	}
    	public void setContact(Contact contact) {
    	this.contact = contact;
    	}
    	public String getFirstname() {
    		return firstname;
    		}
     
    		public void setFirstname(String firstname) {
    		this.firstname = firstname;
    		}
     
    		public String getLastname() {
    		return lastname;
    		}
     
    		public void setLastname(String lastname) {
    		this.lastname = lastname;
    		}
    }
    et le requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    em.createQuery("SELECT contact.lastname FROM Contact AS contact JOIN contact.personne AS personne").getResultList();

  2. #2
    mow
    mow est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Par défaut
    Salut,

    Je pense que dans ton modele une personne peut avoir plusieurs contacts ...
    Si c'est le cas; ce n'est pas l'annotation OneToOne qu'il te faut mais OneToMany.
    Plus exactement, OneToMany dans ta classe Personne et ManyToOne dans ta classe Contact. Tu obtiendras un lien birectionnelle entre tes objets...

    Ensuite, utilise ton identifiant comme référence de ta jointure...

    Et regarde un peu la documentation concernant les annotations associées aux mapping/objet.

    Mow

  3. #3
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    merci;

    je pense qu'il ya une erreur autre que celle ci car j'ai essaier de faire un jointure entre les cles primaires des deux tables (l'attribut Id)
    comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @OneToOne
    @JoinColumn(referencedColumnName="ID")
    mais pas de resultat, malgre qu'il existe des valeur qui ont les memes Id dans les 2 tables

  4. #4
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    et si je fait un LEFT JOIN j'aurait une resultat qui est l'affichage des valeurs l'attribut de la classe contact

  5. #5
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    j'ai essaier de faire une LEFT JOINT donc j'ai eu des resultats (affichage de tout les valeurs de la table contact)
    mais quand j'ai fait un RIGHT JOIN j'ai eu comme resultat (null,null,null)
    je pense que l'erreur est dans la classe personne car elle ne rend paa la moindre resultat

  6. #6
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    en fait il affiche null null null parceque la requete ete select contact.lastname et quand je la changer en personne.lastname elle afiche des resultat pour le RIGHT JOIN.

    mais je pense que la jointure n'est pas fonctionelle
    est ce que vous avez des idees et merci

Discussions similaires

  1. Jointure entre deux tables ?
    Par spirit69 dans le forum Access
    Réponses: 2
    Dernier message: 05/12/2006, 20h21
  2. jointure entre deux tables mysql
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 23/04/2006, 20h08
  3. [MySQL] Jointure entre deux tables
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/10/2005, 18h55
  4. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  5. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50

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