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

Hibernate Java Discussion :

Données d'une association ManyToOne


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 39
    Par défaut Données d'une association ManyToOne
    Bonjour,

    Je suis en train de découvrir Hibernate.

    Pour celà, j'ai créé un petit cas : j'ai trois tables sous MySQL
    - PERSONNE (IDENTPERS, NOMPERS),
    - GROUPE (IDENTGROUP, NOMGROUPE),
    - COMPOSGR (IDENTGROUP, IDENTPERS, ROLE).

    Pb => comment récupérer le rôle sans passer par une requête Query ?

    Entites

    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
     
    @Entity
    @Table(name = "PERSONNE")
    public class Personne implements Serializable,  Comparable<Personne> {
     
    	private static final long serialVersionUID = 3743689093556981957L;
     
    	/** l'identifiant */
    	@Id
    	@Column(name = "IDENTPERS", nullable = false, length = 4)
    	protected String ident = "";
     
    	/** le nom */
    	@Column(name = "NOMPERS", unique=true, nullable = false, length = 30)
    	protected String nom = "";
     
    	// relation Personne (one) -> Composition (many)
    	@OneToMany(mappedBy = "personne", cascade = { CascadeType.REMOVE } )
    	protected Set<Composition> listeGroupe = new HashSet<Composition>();
     
    	public Personne() {
    	}
     
     
    	public String getIdent() {
    		return ident;
    	}
     
     
    	public void setIdent(String ident) {
    		this.ident = ident;
    	}
     
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
     
    	public Set<Composition> getlisteGroupe() {
    		return listeGroupe;
    	}
     
    	public void setListeGroupe(Set<Composition> listeGroupe) {
    		this.listeGroupe = listeGroupe;
    	}
    }
    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
     
    @Entity
    @Table(name = "GROUPE")
    public class Groupe implements Serializable {
     
    	private static final long serialVersionUID = 4960895813795673977L;
     
    	/** l'identifiant */
    	@Id
    	@Column(name = "IDENTGROUP", nullable = false, length = 3)
    	protected String ident = "";
     
    	/** le titre */
    	@Column(name = "NOMGROUPE", unique=true, nullable = false, length = 30)
    	protected String titre = "";
     
    	/** les personnes */
    	// relation Groupe (one) -> Personne (many)
    	@OneToMany(mappedBy = "groupe", cascade = { CascadeType.REMOVE } )
    	protected List<Composition> listePersonne = new ArrayList<Composition>();
     
     
    	public Groupe() {
    	}
     
     
    	public String getIdent() {
    		return ident;
    	}
     
    	public void setIdent(String ident) {
    		this.ident = ident;
    	}
     
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
    	public List<Composition> getListePersonne() {
    		return listePersonne;
    	}
     
    	public void setListePersonne(List<Composition> listePersonne) {
    		this.listePersonne = listePersonne;
    	}
     
    }
    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
    120
    121
     
    @Entity
    @Table(name = "COMPOSGR")
    public class Composition implements Serializable {
     
    	private static final long serialVersionUID = 4428535212320342621L;
     
    	@Embeddable
    	public static class Id implements Serializable {
     
    		private static final long serialVersionUID = 8057271362402253716L;
     
    		/** la personne */
    		@Column(name = "IDENTPERS", nullable = false, length = 4)
    		private String identPers = "";
     
    		/** le groupe */
    		@Column(name = "IDENTGROUPE", nullable = false, length = 3)
    		private String identGroupe = "";
     
     
    		public Id() {
    		}
     
    		public String getIdentPers() {
    			return identPers;
    		}
     
    		public void setIdentPers(String identPers) {
    			this.identPers = identPers;
    		}
     
    		public String getIdentGroupe() {
    			return identGroupe;
    		}
     
    		public void setIdentGroupe(String identGroupe) {
    			this.identGroupe = identGroupe;
    		}
    	}
     
    	@EmbeddedId
    	private Id id = new Id();
     
    	@ManyToOne()
    	@JoinColumn(name= "IDENTPERS", insertable = false, updatable = false)
    	private Personne personne = new Personne();
     
    	@ManyToOne()
    	@JoinColumn(name= "IDENTGROUPE", insertable = false, updatable = false)
    	private Groupe groupe = new Groupe();
     
    	@Column(name = "ROLE", nullable = true, length = 30)
    	private String role = "";
     
     
    	public Composition() {
    	}
     
     
    	public Composition(Personne personne, Groupe groupe) {
    		getId().setIdentPers(personne.getIdent());
    		getId().setIdentGroupe(groupe.getIdent());
     
    		setPersonne(personne);
    		setGroupe(groupe);
    		personne.getListeGroupe().add(this);
    		groupe.getListePersonne().add(this);
    	}
     
     
    	public String getIdentPers() {
    		return getId().getIdentPers();
    	}
     
    	public void setIdentPers(String identPers) {
    		getId().setIdentPers(identPers);
    	}
     
     
    	public String getIdentGroupe() {
    		return getId().getIdentGroupe();
    	}
     
    	public void setIdentGroupe(String identGroupe) {
    		getId().setIdentGroupe(identGroupe);
    	}
     
    	public Id getId() {
    		return id;
    	}
     
    	public void setId(Id id) {
    		this.id = id;
    	}
     
     
    	public Personne getPersonne() {
    		return personne;
    	}
     
    	public void setPersonne(Personne personne) {
    		this.personne = personne;
    	}
     
    	public Groupe getSGroupe() {
    		return Groupe;
    	}
     
    	public void setGroupe(Groupe Groupe) {
    		this.Groupe = Groupe;
    	}
     
    	public String getRole() {
    		return role;
    	}
     
    	public void setRole(String role) {
    		this.role = role;
    	}
    }

    le DAO
    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
     
    ....
     
    	public void getListeGroupe(Personne personne) throws Exception {
     
    		EntityManager em = emf.createEntityManager();
    		EntityTransaction tx = em.getTransaction();
     
    		Personne newPers = em.find(Personne.class, personne.getIdent());
     
    		for(Composition compos : newPers.getListeGroupe()) {
    			Groupe groupe = compos.getGroupe();
     
    			System.out.println("Code : " + groupe.getIdent());
    			System.out.println("Nom : " + groupe.getNom());
    			System.out.println("Role : " + compos.getRole());
    		}
     
    		em.close();
    	}
    Le rôle est systématiquement à blancs

    Merci d'avance pour vos réponses.

  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
    Salut,
    il me semble que tu ne commit pas

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 39
    Par défaut
    Bonjour,

    Merci pour cette réponse mais je n'ai pas mis tout le DAO (seulement la partie intéressante à mon avis) => dans la version complète, il y a bien le "begin" et "commit" de la transaction.

    Cdt.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 39
    Par défaut
    Laissez tomber ! C'est ma base qui est en cause.

    Désolé pour le dérangement.

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

Discussions similaires

  1. [2.x] supprimer une donnée qui est liée à ManyToOne
    Par keokaz dans le forum Symfony
    Réponses: 3
    Dernier message: 14/12/2012, 18h09
  2. Réponses: 2
    Dernier message: 15/06/2011, 10h15
  3. Réponses: 10
    Dernier message: 18/08/2010, 18h32
  4. comment faire une requête avec une association porteuse de données
    Par gaelle95 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 25/11/2009, 15h49
  5. Associer les données d'une session à une BDD
    Par TinyDwarf dans le forum Langage
    Réponses: 3
    Dernier message: 27/07/2006, 19h11

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