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 :

Requête SQL et HQL


Sujet :

Hibernate Java

  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut Requête SQL et HQL
    Bonjour,

    Je novice dans l'utilisation du HQL et Hibernate et m'excuse par avance de mes questions qui peuvent vous sembler bébête.

    Dans un précédent topic, j'avais évoqué le problème du temps de chargement dans mon application
    Le problème venait du fait que je faisais plusieurs appel. On m'a conseillé de faire un seul gros appel, au lieu de faire plusieurs appels.

    J'ai donc fait cette requête qui me rend tous les résultats que j'ai besoin :
    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
     
    Select *
    from unite, uniteservice, service, personne, droit, fonction, userlogin,
    perssemainecompt, jour, semaine,  absence, compteur
    where unite.idUnite = uniteservice.idUnite
    and uniteservice.idService = service.idService
    and service.idService = personne.idService
    and personne.idDroit = droit.idDroit
    and personne.idFonction = fonction.idFonction
    and personne.idUser = userlogin.idUser
    and personne.idPersonne = perssemainecompt.idPersonne
    and perssemainecompt.idJour = jour.idJour
    and perssemainecompt.idSemaine = semaine.idSemaine
    and semaine.idSemaine = jour.idSemaine
    and jour.idAbsence = absence.idAbsence
    and perssemainecompt.idCompteur = compteur.idCompteur
    Chaque table de ma base de données correspond à un bean (classe java)

    Comment puis je transformer cette requête en HQL, et comment puis gérer et récupérer les données ?

    Merci d'avance

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par leara500 Voir le message
    Bonjour,

    Je novice dans l'utilisation du HQL et Hibernate et m'excuse par avance de mes questions qui peuvent vous sembler bébête.

    Dans un précédent topic, j'avais évoqué le problème du temps de chargement dans mon application
    Le problème venait du fait que je faisais plusieurs appel. On m'a conseillé de faire un seul gros appel, au lieu de faire plusieurs appels.

    J'ai donc fait cette requête qui me rend tous les résultats que j'ai besoin :
    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
     
    Select *
    from unite, uniteservice, service, personne, droit, fonction, userlogin,
    perssemainecompt, jour, semaine,  absence, compteur
    where unite.idUnite = uniteservice.idUnite
    and uniteservice.idService = service.idService
    and service.idService = personne.idService
    and personne.idDroit = droit.idDroit
    and personne.idFonction = fonction.idFonction
    and personne.idUser = userlogin.idUser
    and personne.idPersonne = perssemainecompt.idPersonne
    and perssemainecompt.idJour = jour.idJour
    and perssemainecompt.idSemaine = semaine.idSemaine
    and semaine.idSemaine = jour.idSemaine
    and jour.idAbsence = absence.idAbsence
    and perssemainecompt.idCompteur = compteur.idCompteur
    Chaque table de ma base de données correspond à un bean (classe java)

    Comment puis je transformer cette requête en HQL, et comment puis gérer et récupérer les données ?

    Merci d'avance
    Bonjour, fais nous voir le code de toutes les entités rentrant en jeu dans ta requête.

  3. #3
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup pour votre réponse

    Je n'ai pas trop compris votre question DevServlet mais j'espère que le code de toutes les entrée qui rentre en jeu dans ma requête correspond au code des différentes classe java.

    Donc pour chaque table de ma base de donnée, il y a une classe java (sauf pour la table associative uniteservice car elle ne porte que 2 attributs : l'identifiant de la table unite et l'identifiant de la table service)


    Absence.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
    90
    91
    92
    93
    94
    95
    96
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 13 mai 2012 11:46:48 by Hibernate Tools 3.4.0.CR1
     
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
     
    /**
     * Absence generated by hbm2java
     */
    @Entity
    @Table(name = "absence", catalog = "gestionhoraire")
    public class Absence implements java.io.Serializable {
     
    	private Integer idAbsence;
    	private String nomAbsence;
    	private String abrAbsence;
    	private double nombreHeureArecup;
    	private Set<Jour> jours = new HashSet<Jour>(0);
     
    	public Absence() {
    	}
     
    	public Absence(String nomAbsence, String abrAbsence,
    			double nombreHeureArecup) {
    		this.nomAbsence = nomAbsence;
    		this.abrAbsence = abrAbsence;
    		this.nombreHeureArecup = nombreHeureArecup;
    	}
     
    	public Absence(String nomAbsence, String abrAbsence,
    			double nombreHeureArecup, Set<Jour> jours) {
    		this.nomAbsence = nomAbsence;
    		this.abrAbsence = abrAbsence;
    		this.nombreHeureArecup = nombreHeureArecup;
    		this.jours = jours;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idAbsence", unique = true, nullable = false)
    	public Integer getIdAbsence() {
    		return this.idAbsence;
    	}
     
    	public void setIdAbsence(Integer idAbsence) {
    		this.idAbsence = idAbsence;
    	}
     
    	@Column(name = "nomAbsence", nullable = false, length = 100)
    	public String getNomAbsence() {
    		return this.nomAbsence;
    	}
     
    	public void setNomAbsence(String nomAbsence) {
    		this.nomAbsence = nomAbsence;
    	}
     
    	@Column(name = "abrAbsence", nullable = false, length = 45)
    	public String getAbrAbsence() {
    		return this.abrAbsence;
    	}
     
    	public void setAbrAbsence(String abrAbsence) {
    		this.abrAbsence = abrAbsence;
    	}
     
    	@Column(name = "nombreHeureArecup", nullable = false, precision = 22, scale = 0)
    	public double getNombreHeureArecup() {
    		return this.nombreHeureArecup;
    	}
     
    	public void setNombreHeureArecup(double nombreHeureArecup) {
    		this.nombreHeureArecup = nombreHeureArecup;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "absence")
    	public Set<Jour> getJours() {
    		return this.jours;
    	}
     
    	public void setJours(Set<Jour> jours) {
    		this.jours = jours;
    	}
     
    }

    Compteur.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
    90
    91
    92
    93
    94
    95
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 8 juil. 2012 18:26:09 by Hibernate Tools 3.4.0.CR1
     
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
     
    /**
     * Compteur generated by hbm2java
     */
    @Entity
    @Table(name = "compteur", catalog = "gestionhoraire")
    public class Compteur implements java.io.Serializable {
     
    	private Integer idCompteur;
    	private String horaireAfaire;
    	private String horaireFaite;
    	private String observation;
    	private Set<Perssemainecompt> perssemainecompts = new HashSet<Perssemainecompt>(
    			0);
     
    	public Compteur() {
    	}
     
    	public Compteur(String horaireAfaire, String horaireFaite) {
    		this.horaireAfaire = horaireAfaire;
    		this.horaireFaite = horaireFaite;
    	}
     
    	public Compteur(String horaireAfaire, String horaireFaite,
    			String observation, Set<Perssemainecompt> perssemainecompts) {
    		this.horaireAfaire = horaireAfaire;
    		this.horaireFaite = horaireFaite;
    		this.observation = observation;
    		this.perssemainecompts = perssemainecompts;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idCompteur", unique = true, nullable = false)
    	public Integer getIdCompteur() {
    		return this.idCompteur;
    	}
     
    	public void setIdCompteur(Integer idCompteur) {
    		this.idCompteur = idCompteur;
    	}
     
    	@Column(name = "horaireAfaire", nullable = false, length = 5)
    	public String getHoraireAfaire() {
    		return this.horaireAfaire;
    	}
     
    	public void setHoraireAfaire(String horaireAfaire) {
    		this.horaireAfaire = horaireAfaire;
    	}
     
    	@Column(name = "horaireFaite", nullable = false, length = 5)
    	public String getHoraireFaite() {
    		return this.horaireFaite;
    	}
     
    	public void setHoraireFaite(String horaireFaite) {
    		this.horaireFaite = horaireFaite;
    	}
     
    	@Column(name = "observation")
    	public String getObservation() {
    		return this.observation;
    	}
     
    	public void setObservation(String observation) {
    		this.observation = observation;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "compteur")
    	public Set<Perssemainecompt> getPerssemainecompts() {
    		return this.perssemainecompts;
    	}
     
    	public void setPerssemainecompts(Set<Perssemainecompt> perssemainecompts) {
    		this.perssemainecompts = perssemainecompts;
    	}
     
    }
    Droit.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
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 22 avr. 2012 10:32:32 by Hibernate Tools 3.4.0.CR1
     
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
     
    /**
     * Droit generated by hbm2java
     */
    @Entity
    @Table(name = "droit", catalog = "gestionhoraire")
    public class Droit implements java.io.Serializable {
     
    	private Integer idDroit;
    	private String nomDroit;
    	private String descDroit;
    	private Set<Personne> personnes = new HashSet<Personne>(0);
     
    	public Droit() {
    	}
     
    	public Droit(String nomDroit, String descDroit) {
    		this.nomDroit = nomDroit;
    		this.descDroit = descDroit;
    	}
     
    	public Droit(String nomDroit, String descDroit, Set<Personne> personnes) {
    		this.nomDroit = nomDroit;
    		this.descDroit = descDroit;
    		this.personnes = personnes;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idDroit", unique = true, nullable = false)
    	public Integer getIdDroit() {
    		return this.idDroit;
    	}
     
    	public void setIdDroit(Integer idDroit) {
    		this.idDroit = idDroit;
    	}
     
    	@Column(name = "nomDroit", nullable = false, length = 45)
    	public String getNomDroit() {
    		return this.nomDroit;
    	}
     
    	public void setNomDroit(String nomDroit) {
    		this.nomDroit = nomDroit;
    	}
     
    	@Column(name = "descDroit", nullable = false, length = 45)
    	public String getDescDroit() {
    		return this.descDroit;
    	}
     
    	public void setDescDroit(String descDroit) {
    		this.descDroit = descDroit;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "droit")
    	public Set<Personne> getPersonnes() {
    		return this.personnes;
    	}
     
    	public void setPersonnes(Set<Personne> personnes) {
    		this.personnes = personnes;
    	}
     
    }

    Fonction.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
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 22 avr. 2012 10:32:32 by Hibernate Tools 3.4.0.CR1
     
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
     
    /**
     * Fonction generated by hbm2java
     */
    @Entity
    @Table(name = "fonction", catalog = "gestionhoraire")
    public class Fonction implements java.io.Serializable {
     
    	private Integer idFonction;
    	private String descFonction;
    	private Set<Personne> personnes = new HashSet<Personne>(0);
     
    	public Fonction() {
    	}
     
    	public Fonction(String descFonction) {
    		this.descFonction = descFonction;
    	}
     
    	public Fonction(String descFonction, Set<Personne> personnes) {
    		this.descFonction = descFonction;
    		this.personnes = personnes;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idFonction", unique = true, nullable = false)
    	public Integer getIdFonction() {
    		return this.idFonction;
    	}
     
    	public void setIdFonction(Integer idFonction) {
    		this.idFonction = idFonction;
    	}
     
    	@Column(name = "descFonction", nullable = false, length = 100)
    	public String getDescFonction() {
    		return this.descFonction;
    	}
     
    	public void setDescFonction(String descFonction) {
    		this.descFonction = descFonction;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "fonction")
    	public Set<Personne> getPersonnes() {
    		return this.personnes;
    	}
     
    	public void setPersonnes(Set<Personne> personnes) {
    		this.personnes = personnes;
    	}
     
    }
    Jour.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
    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
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 12 juil. 2012 16:14:57 by Hibernate Tools 3.4.0.CR1
     
    import java.sql.Time;
    import java.util.Date;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
     
    /**
     * Jour generated by hbm2java
     */
    @Entity
    @Table(name = "jour", catalog = "gestionhoraire")
    public class Jour implements java.io.Serializable {
     
    	private Integer idJour;
    	private Absence absence;
    	private Semaine semaine;
    	private String jour;
    	private Time debutHoraire;
    	private Time finHoraire;
    	private String typeHoraire;
    	private String libelleJour;
    	private int indexJour;
    	private Set<Perssemainecompt> perssemainecompts = new HashSet<Perssemainecompt>(
    			0);
     
    	public Jour() {
    	}
     
    	public Jour(Absence absence, Semaine semaine, String typeHoraire,
    			String libelleJour, int indexJour) {
    		this.absence = absence;
    		this.semaine = semaine;
    		this.typeHoraire = typeHoraire;
    		this.libelleJour = libelleJour;
    		this.indexJour = indexJour;
    	}
     
    	public Jour(Absence absence, Semaine semaine, String jour,
    			Time debutHoraire, Time finHoraire, String typeHoraire,
    			String libelleJour, int indexJour,
    			Set<Perssemainecompt> perssemainecompts) {
    		this.absence = absence;
    		this.semaine = semaine;
    		this.jour = jour;
    		this.debutHoraire = debutHoraire;
    		this.finHoraire = finHoraire;
    		this.typeHoraire = typeHoraire;
    		this.libelleJour = libelleJour;
    		this.indexJour = indexJour;
    		this.perssemainecompts = perssemainecompts;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idJour", unique = true, nullable = false)
    	public Integer getIdJour() {
    		return this.idJour;
    	}
     
    	public void setIdJour(Integer idJour) {
    		this.idJour = idJour;
    	}
     
    	@ManyToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "idAbsence", nullable = false)
    	public Absence getAbsence() {
    		return this.absence;
    	}
     
    	public void setAbsence(Absence absence) {
    		this.absence = absence;
    	}
     
    	@ManyToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "idSemaine", nullable = false)
    	public Semaine getSemaine() {
    		return this.semaine;
    	}
     
    	public void setSemaine(Semaine semaine) {
    		this.semaine = semaine;
    	}
     
    	@Column(name = "jour", length = 50)
    	public String getJour() {
    		return this.jour;
    	}
     
    	public void setJour(String jour) {
    		this.jour = jour;
    	}
     
    	@Column(name = "debutHoraire", length = 8)
    	public Time getDebutHoraire() {
    		return this.debutHoraire;
    	}
     
    	public void setDebutHoraire(Time debutHoraire) {
    		this.debutHoraire = debutHoraire;
    	}
     
    	@Column(name = "finHoraire", length = 8)
    	public Time getFinHoraire() {
    		return this.finHoraire;
    	}
     
    	public void setFinHoraire(Time finHoraire) {
    		this.finHoraire = finHoraire;
    	}
     
    	@Column(name = "typeHoraire", nullable = false, length = 45)
    	public String getTypeHoraire() {
    		return this.typeHoraire;
    	}
     
    	public void setTypeHoraire(String typeHoraire) {
    		this.typeHoraire = typeHoraire;
    	}
     
    	@Column(name = "libelleJour", nullable = false, length = 45)
    	public String getLibelleJour() {
    		return this.libelleJour;
    	}
     
    	public void setLibelleJour(String libelleJour) {
    		this.libelleJour = libelleJour;
    	}
     
    	@Column(name = "indexJour", nullable = false)
    	public int getIndexJour() {
    		return this.indexJour;
    	}
     
    	public void setIndexJour(int indexJour) {
    		this.indexJour = indexJour;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "jour")
    	public Set<Perssemainecompt> getPerssemainecompts() {
    		return this.perssemainecompts;
    	}
     
    	public void setPerssemainecompts(Set<Perssemainecompt> perssemainecompts) {
    		this.perssemainecompts = perssemainecompts;
    	}
     
    }

    Perssemainecompt.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
    90
    91
    92
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 8 juil. 2012 18:26:09 by Hibernate Tools 3.4.0.CR1
     
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
     
    /**
     * Perssemainecompt generated by hbm2java
     */
    @Entity
    @Table(name = "perssemainecompt", catalog = "gestionhoraire")
    public class Perssemainecompt implements java.io.Serializable {
     
    	private Integer idPersSemaineCompt;
    	private Compteur compteur;
    	private Semaine semaine;
    	private Personne personne;
    	private Jour jour;
     
    	public Perssemainecompt() {
    	}
     
    	public Perssemainecompt(Compteur compteur, Semaine semaine,
    			Personne personne, Jour jour) {
    		this.compteur = compteur;
    		this.semaine = semaine;
    		this.personne = personne;
    		this.jour = jour;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idPersSemaineCompt", unique = true, nullable = false)
    	public Integer getIdPersSemaineCompt() {
    		return this.idPersSemaineCompt;
    	}
     
    	public void setIdPersSemaineCompt(Integer idPersSemaineCompt) {
    		this.idPersSemaineCompt = idPersSemaineCompt;
    	}
     
    	@ManyToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "idCompteur", nullable = false)
    	public Compteur getCompteur() {
    		return this.compteur;
    	}
     
    	public void setCompteur(Compteur compteur) {
    		this.compteur = compteur;
    	}
     
    	@ManyToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "idSemaine", nullable = false)
    	public Semaine getSemaine() {
    		return this.semaine;
    	}
     
    	public void setSemaine(Semaine semaine) {
    		this.semaine = semaine;
    	}
     
    	@ManyToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "idPersonne", nullable = false)
    	public Personne getPersonne() {
    		return this.personne;
    	}
     
    	public void setPersonne(Personne personne) {
    		this.personne = personne;
    	}
     
    	@ManyToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "idJour", nullable = false)
    	public Jour getJour() {
    		return this.jour;
    	}
     
    	public void setJour(Jour jour) {
    		this.jour = jour;
    	}
     
    }
    Roulement.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
     
    package com.maison.enfant.gestion.horaire.entitybeans;
    // default package
    // Generated 1 juil. 2012 11:08:24 by Hibernate Tools 3.4.0.CR1
     
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
     
    /**
     * Roulement generated by hbm2java
     */
    @Entity
    @Table(name = "roulement", catalog = "gestionhoraire")
    public class Roulement implements java.io.Serializable {
     
    	private Integer idRoulement;
    	private Service service;
    	private String nomRoulement;
     
    	public Roulement() {
    	}
     
    	public Roulement(Service service, String nomRoulement) {
    		this.service = service;
    		this.nomRoulement = nomRoulement;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idRoulement", unique = true, nullable = false)
    	public Integer getIdRoulement() {
    		return this.idRoulement;
    	}
     
    	public void setIdRoulement(Integer idRoulement) {
    		this.idRoulement = idRoulement;
    	}
     
    	@ManyToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "idService", nullable = false)
    	public Service getService() {
    		return this.service;
    	}
     
    	public void setService(Service service) {
    		this.service = service;
    	}
     
    	@Column(name = "nomRoulement", nullable = false, length = 45)
    	public String getNomRoulement() {
    		return this.nomRoulement;
    	}
     
    	public void setNomRoulement(String nomRoulement) {
    		this.nomRoulement = nomRoulement;
    	}
     
    }
    Semaine.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
    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
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 1 sept. 2012 18:42:07 by Hibernate Tools 3.4.0.CR1
     
    import java.util.Date;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
     
    /**
     * Semaine generated by hbm2java
     */
    @Entity
    @Table(name = "semaine", catalog = "gestionhoraire")
    public class Semaine implements java.io.Serializable {
     
    	private Integer idSemaine;
    	private Integer numeroSemaine;
    	private String roulementSem;
    	private Date dateModif;
    	private Date dateDebutSem;
    	private Date dateFinSem;
    	private String type;
    	private int idRoulementSem;
    	private Set<Perssemainecompt> perssemainecompts = new HashSet<Perssemainecompt>(
    			0);
    	private Set<Jour> jours = new HashSet<Jour>(0);
     
    	public Semaine() {
    	}
     
    	public Semaine(Date dateModif, String type, int idRoulementSem) {
    		this.dateModif = dateModif;
    		this.type = type;
    		this.idRoulementSem = idRoulementSem;
    	}
     
    	public Semaine(Integer numeroSemaine, String roulementSem, Date dateModif,
    			Date dateDebutSem, Date dateFinSem, String type,
    			int idRoulementSem, Set<Perssemainecompt> perssemainecompts,
    			Set<Jour> jours) {
    		this.numeroSemaine = numeroSemaine;
    		this.roulementSem = roulementSem;
    		this.dateModif = dateModif;
    		this.dateDebutSem = dateDebutSem;
    		this.dateFinSem = dateFinSem;
    		this.type = type;
    		this.idRoulementSem = idRoulementSem;
    		this.perssemainecompts = perssemainecompts;
    		this.jours = jours;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idSemaine", unique = true, nullable = false)
    	public Integer getIdSemaine() {
    		return this.idSemaine;
    	}
     
    	public void setIdSemaine(Integer idSemaine) {
    		this.idSemaine = idSemaine;
    	}
     
    	@Column(name = "numeroSemaine")
    	public Integer getNumeroSemaine() {
    		return this.numeroSemaine;
    	}
     
    	public void setNumeroSemaine(Integer numeroSemaine) {
    		this.numeroSemaine = numeroSemaine;
    	}
     
    	@Column(name = "roulementSem", length = 10)
    	public String getRoulementSem() {
    		return this.roulementSem;
    	}
     
    	public void setRoulementSem(String roulementSem) {
    		this.roulementSem = roulementSem;
    	}
     
    	@Temporal(TemporalType.DATE)
    	@Column(name = "dateModif", nullable = false, length = 10)
    	public Date getDateModif() {
    		return this.dateModif;
    	}
     
    	public void setDateModif(Date dateModif) {
    		this.dateModif = dateModif;
    	}
     
    	@Temporal(TemporalType.DATE)
    	@Column(name = "dateDebutSem", length = 10)
    	public Date getDateDebutSem() {
    		return this.dateDebutSem;
    	}
     
    	public void setDateDebutSem(Date dateDebutSem) {
    		this.dateDebutSem = dateDebutSem;
    	}
     
    	@Temporal(TemporalType.DATE)
    	@Column(name = "dateFinSem", length = 10)
    	public Date getDateFinSem() {
    		return this.dateFinSem;
    	}
     
    	public void setDateFinSem(Date dateFinSem) {
    		this.dateFinSem = dateFinSem;
    	}
     
    	@Column(name = "type", nullable = false, length = 45)
    	public String getType() {
    		return this.type;
    	}
     
    	public void setType(String type) {
    		this.type = type;
    	}
     
    	@Column(name = "idRoulementSem", nullable = false)
    	public int getIdRoulementSem() {
    		return this.idRoulementSem;
    	}
     
    	public void setIdRoulementSem(int idRoulementSem) {
    		this.idRoulementSem = idRoulementSem;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "semaine")
    	public Set<Perssemainecompt> getPerssemainecompts() {
    		return this.perssemainecompts;
    	}
     
    	public void setPerssemainecompts(Set<Perssemainecompt> perssemainecompts) {
    		this.perssemainecompts = perssemainecompts;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "semaine")
    	public Set<Jour> getJours() {
    		return this.jours;
    	}
     
    	public void setJours(Set<Jour> jours) {
    		this.jours = jours;
    	}
     
    }
    Service.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
    90
    91
    92
    93
    94
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 1 juil. 2012 11:08:24 by Hibernate Tools 3.4.0.CR1
     
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.ManyToMany;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
     
    /**
     * Service generated by hbm2java
     */
    @Entity
    @Table(name = "service", catalog = "gestionhoraire")
    public class Service implements java.io.Serializable {
     
    	private Integer idService;
    	private String nomService;
    	private Set<Roulement> roulements = new HashSet<Roulement>(0);
    	private Set<Unite> unites = new HashSet<Unite>(0);
    	private Set<Personne> personnes = new HashSet<Personne>(0);
     
    	public Service() {
    	}
     
    	public Service(String nomService) {
    		this.nomService = nomService;
    	}
     
    	public Service(String nomService, Set<Roulement> roulements,
    			Set<Unite> unites, Set<Personne> personnes) {
    		this.nomService = nomService;
    		this.roulements = roulements;
    		this.unites = unites;
    		this.personnes = personnes;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idService", unique = true, nullable = false)
    	public Integer getIdService() {
    		return this.idService;
    	}
     
    	public void setIdService(Integer idService) {
    		this.idService = idService;
    	}
     
    	@Column(name = "nomService", nullable = false, length = 45)
    	public String getNomService() {
    		return this.nomService;
    	}
     
    	public void setNomService(String nomService) {
    		this.nomService = nomService;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "service")
    	public Set<Roulement> getRoulements() {
    		return this.roulements;
    	}
     
    	public void setRoulements(Set<Roulement> roulements) {
    		this.roulements = roulements;
    	}
     
    	@ManyToMany(fetch = FetchType.LAZY, mappedBy = "services")
    	public Set<Unite> getUnites() {
    		return this.unites;
    	}
     
    	public void setUnites(Set<Unite> unites) {
    		this.unites = unites;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "service")
    	public Set<Personne> getPersonnes() {
    		return this.personnes;
    	}
     
    	public void setPersonnes(Set<Personne> personnes) {
    		this.personnes = personnes;
    	}
     
    }

    Unite.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
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 22 avr. 2012 15:56:00 by Hibernate Tools 3.4.0.CR1
     
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.JoinTable;
    import javax.persistence.ManyToMany;
    import javax.persistence.Table;
     
    /**
     * Unite generated by hbm2java
     */
    @Entity
    @Table(name = "unite", catalog = "gestionhoraire")
    public class Unite implements java.io.Serializable {
     
    	private Integer idUnite;
    	private String nomUnite;
    	private Set<Service> services = new HashSet<Service>(0);
     
    	public Unite() {
    	}
     
    	public Unite(String nomUnite) {
    		this.nomUnite = nomUnite;
    	}
     
    	public Unite(String nomUnite, Set<Service> services) {
    		this.nomUnite = nomUnite;
    		this.services = services;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idUnite", unique = true, nullable = false)
    	public Integer getIdUnite() {
    		return this.idUnite;
    	}
     
    	public void setIdUnite(Integer idUnite) {
    		this.idUnite = idUnite;
    	}
     
    	@Column(name = "nomUnite", nullable = false, length = 45)
    	public String getNomUnite() {
    		return this.nomUnite;
    	}
     
    	public void setNomUnite(String nomUnite) {
    		this.nomUnite = nomUnite;
    	}
     
    	@ManyToMany(fetch = FetchType.LAZY)
    	@JoinTable(name = "uniteservice", catalog = "gestionhoraire", joinColumns = { @JoinColumn(name = "idUnite", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "idService", nullable = false, updatable = false) })
    	public Set<Service> getServices() {
    		return this.services;
    	}
     
    	public void setServices(Set<Service> services) {
    		this.services = services;
    	}
     
    }

    Userlogin.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
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // Generated 14 avr. 2012 20:46:45 by Hibernate Tools 3.4.0.CR1
     
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
     
    /**
     * Userlogin generated by hbm2java
     */
    @Entity
    @Table(name = "userlogin", catalog = "gestionhoraire")
    public class Userlogin implements java.io.Serializable {
     
    	private Integer idUser;
    	private String login;
    	private String mdp;
    	private Set<Personne> personnes = new HashSet<Personne>(0);
     
    	public Userlogin() {
    	}
     
    	public Userlogin(String login, String mdp) {
    		this.login = login;
    		this.mdp = mdp;
    	}
     
    	public Userlogin(String login, String mdp, Set<Personne> personnes) {
    		this.login = login;
    		this.mdp = mdp;
    		this.personnes = personnes;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idUser", unique = true, nullable = false)
    	public Integer getIdUser() {
    		return this.idUser;
    	}
     
    	public void setIdUser(Integer idUser) {
    		this.idUser = idUser;
    	}
     
    	@Column(name = "login", nullable = false, length = 45)
    	public String getLogin() {
    		return this.login;
    	}
     
    	public void setLogin(String login) {
    		this.login = login;
    	}
     
    	@Column(name = "mdp", nullable = false, length = 45)
    	public String getMdp() {
    		return this.mdp;
    	}
     
    	public void setMdp(String mdp) {
    		this.mdp = mdp;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "userlogin")
    	public Set<Personne> getPersonnes() {
    		return this.personnes;
    	}
     
    	public void setPersonnes(Set<Personne> personnes) {
    		this.personnes = personnes;
    	}
     
    }
    Est ce que je dois faire une objet qui a pour attribut tous ces objets ?

    Merci beaucoup de vos lumières

  4. #4
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    N'y a t'il personne pour me donner des pistes de réflexion pour lar éalisation de cette requête SQL en HQL ? Dois je créer un objet qui aura comme attributs les différentes entité bean ?

    Merci pour votre aide...

  5. #5
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour,
    Peux tu nous poster ton diagramme de classe UML? y'a beaucoup trop d'entités qui rentrent en jeu dans ta requête pour qu'on reconstitue le diagramme via le code des classes. Il est important que tu comprennes que les HQL s'appuient essentiellement sur ton diagramme UML.

  6. #6
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup de votre réponse et pour votre aide.
    Je vous prie de bien vouloir trouver ci-dessous mon schéma relationnel


    Modélisation

  7. #7
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par leara500 Voir le message
    Merci beaucoup de votre réponse et pour votre aide.
    Je vous prie de bien vouloir trouver ci-dessous mon schéma relationnel


    Modélisation
    Non pas le schéma physique, le modèle conceptuel objet, à moins qu'il n'yen ait pas...

  8. #8
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Désolée,

    Je n'ai pas fait autre chose que ce schéma

    A partir de ce schéma, j'ai créé des classes java (que j'ai tout regroupé dans un dossier bean).
    Grâce à ce que j'ai développé, je peux ajouter, modifier et supprimer le contenu de ces différentes tables, via une interface graphique ( en jsp)
    Le soucis que j'ai, c'est lorsque je veux afficher les données : cela prend énormément de temps

    Auriez vous des pistes pour me guider, s'il vous plait ?
    Je vous en remercie d'avance.

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    si je comprend ta requête, tu demande à charger tous les Service avec toutes les données liées à plusieurs niveaux....

    Un remarque quand même, ça reviens à dire à hibernate "charge moi toute la database en une fois", c'est pas très performant, mais soit.


    Pour forcer le chargement des collections en hql, il suffit d'utiliser le mot clé "fetch"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    from Unite as unite 
    left join fetch unite.services as service
    left join fetch service.unites as unite2 /* on tourne en rond*/
    left join fetch service.personnes as personne
    etc etc

  10. #10
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Un remarque quand même, ça reviens à dire à hibernate "charge moi toute la database en une fois", c'est pas très performant, mais soit.
    Je suis en train de développer une application de gestion des horaires (d’où la présence entre autre de la table jour et semaine, entre autres) Disons plutôt que je cherche à récupérer les horaires en fonction des unités (et/ou service).
    J'arrive à les récupérer mais cela prend énormément de temps à charger les données (car j'avais fais des requête imbriquées).
    Donc là, j'essaie de récupérer toutes les données d'un seul coup. Mais s'il existe une autre solution pour améliorer la performance, je suis preneuse ^^'

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    en général, charger les données à la demande est performant. Par exemple, tu dois traiter tous les horaires d'un service donné?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from Horaire horaire where horaire.service.name = :service
    inner join fetch horaire.details
    Enfin, tu vois l'idée

    après si il manque une données par ci par là, autant laissre hibernate la charger à la demande.


    Maintenant, si tu n'as besoin que de "tous les horaires actifs le jeudi 13 septembre", rajoute ça comme critère dans ton query pour minimiser ce que tu ramène de la db

  12. #12
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup pour vos réponses et j'essaie de les mettre en pratique.
    Mais je suis confrontée à un problème peut être annondin pour vous mais très compliquée pour moi :

    comment peut on faire pour récupérer les élément de 2 tables en requête HQL ?

    Ma requête SQL est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT DISTINCT unite.nomUnite, semaine.idSemaine, semaine.numeroSemaine, semaine.roulementSem, semaine.dateModif, semaine.dateDebutSem, semaine.dateFinSem, semaine.type
    FROM unite, uniteservice, service, personne, perssemainecompt, semaine
    WHERE unite.idUnite = uniteservice.idUnite
    AND uniteservice.idService = service.idService
    AND service.idService = personne.idService
    AND personne.idPersonne = perssemainecompt.idPersonne
    AND perssemainecompt.idSemaine = semaine.idSemaine
    J'aimerai récupérer la liste des semaines et le nom de l'unité qui y est associé, ce dernier ne se trouvant pas dans la table semaine

    J'ai essayé ce code mais cela ne fonctionne pas u_u
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select distinct semaine From Semaine as semaine, unite From Unite as unite " +
    	"join semaine.perssemainecompts as perssemainecompts " +
    	"join perssemainecompts.personne as personne "+
    	"join personne.service as service "+
    	"join service.unites as unite.services
    Auriez vous des suggestions ?

  13. #13
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Je vous mets la fonction que j'utilise :

    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
     
    @Override
    	public List<SemaineDisplay> getListSemaineDisp() {
     
    		List<SemaineDisplay> listSemaineDisp = new ArrayList<SemaineDisplay>();
    		List<Object> listSemaine = new ArrayList<Object>();
     
    		String queryString =
    				"select distinct semaine From Semaine as semaine, unite From Unite as unite " +
    						"join semaine.perssemainecompts as perssemainecompts " +
    						"join perssemainecompts.personne as personne "+
    						"join personne.service as service "+
    						"join service.unites as unite.services";
     
    		listSemaine = this.getHibernateTemplate().find(queryString);
    		for(Object semDisp :listSemaine ){
    			System.out.println(" unite :"+semDisp.toString());
    		}
     
    		return listSemaineDisp;
    	}
    et le message d'erreur que j'obtiens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    unexpected token: unite near line 1, column 96 [select distinct semaine From com.maison.enfant.gestion.horaire.entitybeans.Semaine as semaine, unite From com.maison.enfant.gestion.horaire.entitybeans.Unite as unite join semaine.perssemainecompts as perssemainecompts join perssemainecompts.personne as personne join personne.service as service join service.unites as unite.services]
    Merci beaucoup de votre aide

  14. #14
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Pas la moindre solution .

    En allant ici
    j'ai testé cette exemple de requête pour récupérer les informations de 2 tables différente mais çà ne fonctionne pas u_u

    code exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select mother, offspr, mate.name
    from DomesticCat as mother
        inner join mother.mate as mate
        left outer join mother.kittens as offspr
    code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    "select distinct semaine From Semaine as semaine, unite From Unite as unite " +
    						"join semaine.perssemainecompts as perssemainecompts " +
    						"join perssemainecompts.personne as personne "+
    						"join personne.service as service "+
    						"join service.unites as unite.services"
    J'ai utilisé le distinct pour éviter d'avoir des doublons

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    il ne peux y avoir qu'une seule clause "From" dans une requete HQL, tout comme en SQL, il faut mettre toutes tes tables à droite du seul From avec des , entre les noms des tables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select semain, unite From Semaine as semaine, Unite as unite
    Je ne suis pas sur que le distinct aie un sens ici.

    et ça, je n'ai pas l'impressions que ça veuille dire quelque chose en HQL:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    join service.unites as unite.services
    tu ne peux pas donner à service.unites le même nom que unite.services. D'ailleurs je ne suis pas sur qu'on puisse utiliser des . dans un alias.

  16. #16
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour,Au vu de ses questions sur le JPQL, je ne pense pas que la meilleure façon d'apprendre est de lui répondre sur les bases ici, mais qu'il prenne le temps de lire un tutoriel JPA,il gagnera beaucoup ainsi.Voici un tutoriel JPA que je te conseille vivement. Tu comprendras les points suivants importants:
    -Le mapping proprement dit
    -La navigation à la UML s'appuyant sur un diagramme d'objets bien conçu(ce qui est son pb crucial actuel)
    -L'optimisation du mapping et ses vertues
    -etc...
    Ou encore cet autre tutoriel très riche que j'aime bien ici
    Fichiers attachés Fichiers attachés

  17. #17
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup pour vos réponses et votre aide.
    Je vais de ce pas lire les tuto ^^

  18. #18
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    J'ai lu les différents tuto que vous m'avez proposé, mais je reste toujours confronté à un pb : j'essaie de récupérer des éléments de tables différentes mais je ne sais pas comment caster le résultat obtenu. En effet, je récupère des éléments de la table "semaine" et de la table "'unite"

    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
     
    public List<SemaineDisplay> getListSemaineDisp() {
     
    		List<SemaineDisplay> listSemaineDisp = new ArrayList<SemaineDisplay>();
    		List listSemaine = new ArrayList();
     
    		String queryString =
    				"SELECT distinct semaine.idSemaine, semaine.numeroSemaine, semaine.roulementSem, "+
    						"semaine.dateModif, semaine.dateDebutSem, semaine.dateFinSem, semaine.type, unite.nomUnite "+
    						"FROM Semaine as semaine, Unite as unite " +
    						"join semaine.perssemainecompts as perssemainecompts " +
    						"join perssemainecompts.personne as personne "+
    						"join personne.service as service "+
    						"join service.unites as unite";
     
     
    		listSemaine = this.getHibernateTemplate().find(queryString);
    		Iterator listSemaineIter = listSemaine.iterator();
    		while(listSemaineIter.hasNext()){
    			String value = (String) listSemaineIter.next();
    			System.out.println("vbalue : "+value);
    		}
     
    		return listSemaine;
    	}
    J'ai crée un objet semaineDisplay qui a, entre autre, pour attribuer la semaine et l'unite

    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
     
    package com.maison.enfant.gestion.horaire.display;
     
    import java.util.Date;
    import java.util.List;
     
    import com.maison.enfant.gestion.horaire.dto.AbsenceDTO;
    import com.maison.enfant.gestion.horaire.dto.PersonneDTO;
    import com.maison.enfant.gestion.horaire.dto.SemaineDTO;
    import com.maison.enfant.gestion.horaire.dto.ServiceDTO;
    import com.maison.enfant.gestion.horaire.dto.UniteDTO;
     
    public class SemaineDisplay {
    	private ServiceDTO serviceDto;
    	private UniteDTO uniteDto; 
     
    	private PersonneDTO personneDto;
    	private SemaineDTO semaineDto;
     
    	private String roulSemaine;
    	private int idRoulement;
    	private String nomUnite;
     
    	private int numeroSemaineDisp;
    	private String typeSemaineDisp;
    	private Date dateDebutDisp;
     
    	private Date dateFinDisp;
    	private Date dateModifDisp;
     
    	public int getIdRoulement() {
    		return idRoulement;
    	}
     
    	public void setIdRoulement(int idRoulement) {
    		this.idRoulement = idRoulement;
    	}
     
    	public String getRoulSemaine() {
    		return roulSemaine;
    	}
     
    	public void setRoulSemaine(String roulSemaine) {
    		this.roulSemaine = roulSemaine;
    	}
    	public ServiceDTO getServiceDto() {
    		return serviceDto;
    	}
    	public void setServiceDto(ServiceDTO serviceDto) {
    		this.serviceDto = serviceDto;
    	}
    	public UniteDTO getUniteDto() {
    		return uniteDto;
    	}
    	public void setUniteDto(UniteDTO uniteDto) {
    		this.uniteDto = uniteDto;
    	}
    	public PersonneDTO getPersonneDto() {
    		return personneDto;
    	}
    	public void setPersonneDto(PersonneDTO personneDto) {
    		this.personneDto = personneDto;
    	}
    	public SemaineDTO getSemaineDto() {
    		return semaineDto;
    	}
    	public void setSemaineDto(SemaineDTO semaineDto) {
    		this.semaineDto = semaineDto;
    	}
    	public SemaineDisplay(ServiceDTO serviceDto, UniteDTO uniteDto,
    			PersonneDTO personneDto, SemaineDTO semaineDto) {
    		super();
    		this.serviceDto = serviceDto;
    		this.uniteDto = uniteDto;
    		this.personneDto = personneDto;
    		this.semaineDto = semaineDto;
    	}
    	public SemaineDisplay() {
    		super();
    	}
    	public Date getDateDebutDisp() {
    		return dateDebutDisp;
    	}
    	public void setDateDebutDisp(Date dateDebutDisp) {
    		this.dateDebutDisp = dateDebutDisp;
    	}
    	public Date getDateFinDisp() {
    		return dateFinDisp;
    	}
    	public void setDateFinDisp(Date dateFinDisp) {
    		this.dateFinDisp = dateFinDisp;
    	}
    	public Date getDateModifDisp() {
    		return dateModifDisp;
    	}
    	public void setDateModifDisp(Date dateModifDisp) {
    		this.dateModifDisp = dateModifDisp;
    	}
    	public int getNumeroSemaineDisp() {
    		return numeroSemaineDisp;
    	}
    	public void setNumeroSemaineDisp(int numeroSemaineDisp) {
    		this.numeroSemaineDisp = numeroSemaineDisp;
    	}
    	public String getTypeSemaineDisp() {
    		return typeSemaineDisp;
    	}
    	public void setTypeSemaineDisp(String typeSemaineDisp) {
    		this.typeSemaineDisp = typeSemaineDisp;
    	}
     
     
    	public String getNomUnite() {
    		return nomUnite;
    	}
     
    	public void setNomUnite(String nomUnite) {
    		this.nomUnite = nomUnite;
    	}
     
    }
    Merci beaucoup pour votre aide.

  19. #19
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour, je pense que tu n'as toujours pas compris.Dis as tu fait de l'UML? tu penses beaucoup en relationnel, et non objet, la seule récupération de ton objet semaine suffit via ses accesseurs à remonter tous les objets rattachés à la seamine, puisque c'est ce que tu es entrain de faire dans tes join.Je ne vois pas de filtre dans ta requete. Peux tu nous dire en francais ce que tu veux faire? Autre chose as tu lu et appliqué (faire éxecuter les tutos que je t'ai envoyés?) ça ne sert à rien de vouloir s'empresser de faire marcher ton code si tu n'acquières pas tout seul les bases. Ce n'est vraiment pas encore le cas

  20. #20
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    J'avoue que j'ai du mal u_u'

    J'ai 2 tables : semaine et unité que j'ai transformé en objet :
    Semaine.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
    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
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 18 sept. 2012 12:00:32 by Hibernate Tools 3.4.0.CR1
     
    import java.util.Date;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
     
    /**
     * Semaine generated by hbm2java
     */
    @Entity
    @Table(name = "semaine", catalog = "gestionhoraire")
    public class Semaine implements java.io.Serializable {
     
    	private Integer idSemaine;
    	private Integer numeroSemaine;
    	private String roulementSem;
    	private Date dateModif;
    	private Date dateDebutSem;
    	private Date dateFinSem;
    	private String type;
    	private int idRoulementSem;
    	private Set<Perssemainecompt> perssemainecompts = new HashSet<Perssemainecompt>(
    			0);
    	private Set<Jour> jours = new HashSet<Jour>(0);
     
    	public Semaine() {
    	}
     
    	public Semaine(Date dateModif, String type, int idRoulementSem) {
    		this.dateModif = dateModif;
    		this.type = type;
    		this.idRoulementSem = idRoulementSem;
     
    	}
     
    	public Semaine(Integer numeroSemaine, String roulementSem, Date dateModif,
    			Date dateDebutSem, Date dateFinSem, String type,
    			int idRoulementSem, 
    			Set<Perssemainecompt> perssemainecompts, Set<Jour> jours) {
    		this.numeroSemaine = numeroSemaine;
    		this.roulementSem = roulementSem;
    		this.dateModif = dateModif;
    		this.dateDebutSem = dateDebutSem;
    		this.dateFinSem = dateFinSem;
    		this.type = type;
    		this.idRoulementSem = idRoulementSem;
     
    		this.perssemainecompts = perssemainecompts;
    		this.jours = jours;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idSemaine", unique = true, nullable = false)
    	public Integer getIdSemaine() {
    		return this.idSemaine;
    	}
     
    	public void setIdSemaine(Integer idSemaine) {
    		this.idSemaine = idSemaine;
    	}
     
    	@Column(name = "numeroSemaine")
    	public Integer getNumeroSemaine() {
    		return this.numeroSemaine;
    	}
     
    	public void setNumeroSemaine(Integer numeroSemaine) {
    		this.numeroSemaine = numeroSemaine;
    	}
     
    	@Column(name = "roulementSem", length = 10)
    	public String getRoulementSem() {
    		return this.roulementSem;
    	}
     
    	public void setRoulementSem(String roulementSem) {
    		this.roulementSem = roulementSem;
    	}
     
    	@Temporal(TemporalType.DATE)
    	@Column(name = "dateModif", nullable = false, length = 10)
    	public Date getDateModif() {
    		return this.dateModif;
    	}
     
    	public void setDateModif(Date dateModif) {
    		this.dateModif = dateModif;
    	}
     
    	@Temporal(TemporalType.DATE)
    	@Column(name = "dateDebutSem", length = 10)
    	public Date getDateDebutSem() {
    		return this.dateDebutSem;
    	}
     
    	public void setDateDebutSem(Date dateDebutSem) {
    		this.dateDebutSem = dateDebutSem;
    	}
     
    	@Temporal(TemporalType.DATE)
    	@Column(name = "dateFinSem", length = 10)
    	public Date getDateFinSem() {
    		return this.dateFinSem;
    	}
     
    	public void setDateFinSem(Date dateFinSem) {
    		this.dateFinSem = dateFinSem;
    	}
     
    	@Column(name = "type", nullable = false, length = 45)
    	public String getType() {
    		return this.type;
    	}
     
    	public void setType(String type) {
    		this.type = type;
    	}
     
    	@Column(name = "idRoulementSem", nullable = false)
    	public int getIdRoulementSem() {
    		return this.idRoulementSem;
    	}
     
    	public void setIdRoulementSem(int idRoulementSem) {
    		this.idRoulementSem = idRoulementSem;
    	}
     
     
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "semaine")
    	public Set<Perssemainecompt> getPerssemainecompts() {
    		return this.perssemainecompts;
    	}
     
    	public void setPerssemainecompts(Set<Perssemainecompt> perssemainecompts) {
    		this.perssemainecompts = perssemainecompts;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "semaine")
    	public Set<Jour> getJours() {
    		return this.jours;
    	}
     
    	public void setJours(Set<Jour> jours) {
    		this.jours = jours;
    	}
     
    }

    unite.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
     
    package com.maison.enfant.gestion.horaire.entitybeans;
     
    // default package
    // Generated 22 avr. 2012 15:56:00 by Hibernate Tools 3.4.0.CR1
     
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.JoinTable;
    import javax.persistence.ManyToMany;
    import javax.persistence.Table;
     
    /**
     * Unite generated by hbm2java
     */
    @Entity
    @Table(name = "unite", catalog = "gestionhoraire")
    public class Unite implements java.io.Serializable {
     
    	private Integer idUnite;
    	private String nomUnite;
    	private Set<Service> services = new HashSet<Service>(0);
     
    	public Unite() {
    	}
     
    	public Unite(String nomUnite) {
    		this.nomUnite = nomUnite;
    	}
     
    	public Unite(String nomUnite, Set<Service> services) {
    		this.nomUnite = nomUnite;
    		this.services = services;
    	}
     
    	@Id
    	@GeneratedValue(strategy = IDENTITY)
    	@Column(name = "idUnite", unique = true, nullable = false)
    	public Integer getIdUnite() {
    		return this.idUnite;
    	}
     
    	public void setIdUnite(Integer idUnite) {
    		this.idUnite = idUnite;
    	}
     
    	@Column(name = "nomUnite", nullable = false, length = 45)
    	public String getNomUnite() {
    		return this.nomUnite;
    	}
     
    	public void setNomUnite(String nomUnite) {
    		this.nomUnite = nomUnite;
    	}
     
    	@ManyToMany(fetch = FetchType.LAZY)
    	@JoinTable(name = "uniteservice", catalog = "gestionhoraire", joinColumns = { @JoinColumn(name = "idUnite", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "idService", nullable = false, updatable = false) })
    	public Set<Service> getServices() {
    		return this.services;
    	}
     
    	public void setServices(Set<Service> services) {
    		this.services = services;
    	}
     
    }
    J'ai crée un objet semaineDisplay qui reprend les attributs que j'ai besoin

    semaineDisplay
    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
    122
     
    package com.maison.enfant.gestion.horaire.display;
     
    import java.util.Date;
    import java.util.List;
     
    import com.maison.enfant.gestion.horaire.dto.AbsenceDTO;
    import com.maison.enfant.gestion.horaire.dto.PersonneDTO;
    import com.maison.enfant.gestion.horaire.dto.SemaineDTO;
    import com.maison.enfant.gestion.horaire.dto.ServiceDTO;
    import com.maison.enfant.gestion.horaire.dto.UniteDTO;
     
    public class SemaineDisplay {
    	private ServiceDTO serviceDto;
    	private UniteDTO uniteDto; 
     
    	private PersonneDTO personneDto;
    	private SemaineDTO semaineDto;
     
    	private String roulSemaine;
    	private int idRoulement;
    	private String nomUnite;
     
    	private int numeroSemaineDisp;
    	private String typeSemaineDisp;
    	private Date dateDebutDisp;
     
    	private Date dateFinDisp;
    	private Date dateModifDisp;
     
    	public int getIdRoulement() {
    		return idRoulement;
    	}
     
    	public void setIdRoulement(int idRoulement) {
    		this.idRoulement = idRoulement;
    	}
     
    	public String getRoulSemaine() {
    		return roulSemaine;
    	}
     
    	public void setRoulSemaine(String roulSemaine) {
    		this.roulSemaine = roulSemaine;
    	}
    	public ServiceDTO getServiceDto() {
    		return serviceDto;
    	}
    	public void setServiceDto(ServiceDTO serviceDto) {
    		this.serviceDto = serviceDto;
    	}
    	public UniteDTO getUniteDto() {
    		return uniteDto;
    	}
    	public void setUniteDto(UniteDTO uniteDto) {
    		this.uniteDto = uniteDto;
    	}
    	public PersonneDTO getPersonneDto() {
    		return personneDto;
    	}
    	public void setPersonneDto(PersonneDTO personneDto) {
    		this.personneDto = personneDto;
    	}
    	public SemaineDTO getSemaineDto() {
    		return semaineDto;
    	}
    	public void setSemaineDto(SemaineDTO semaineDto) {
    		this.semaineDto = semaineDto;
    	}
    	public SemaineDisplay(ServiceDTO serviceDto, UniteDTO uniteDto,
    			PersonneDTO personneDto, SemaineDTO semaineDto) {
    		super();
    		this.serviceDto = serviceDto;
    		this.uniteDto = uniteDto;
    		this.personneDto = personneDto;
    		this.semaineDto = semaineDto;
    	}
    	public SemaineDisplay() {
    		super();
    	}
    	public Date getDateDebutDisp() {
    		return dateDebutDisp;
    	}
    	public void setDateDebutDisp(Date dateDebutDisp) {
    		this.dateDebutDisp = dateDebutDisp;
    	}
    	public Date getDateFinDisp() {
    		return dateFinDisp;
    	}
    	public void setDateFinDisp(Date dateFinDisp) {
    		this.dateFinDisp = dateFinDisp;
    	}
    	public Date getDateModifDisp() {
    		return dateModifDisp;
    	}
    	public void setDateModifDisp(Date dateModifDisp) {
    		this.dateModifDisp = dateModifDisp;
    	}
    	public int getNumeroSemaineDisp() {
    		return numeroSemaineDisp;
    	}
    	public void setNumeroSemaineDisp(int numeroSemaineDisp) {
    		this.numeroSemaineDisp = numeroSemaineDisp;
    	}
    	public String getTypeSemaineDisp() {
    		return typeSemaineDisp;
    	}
    	public void setTypeSemaineDisp(String typeSemaineDisp) {
    		this.typeSemaineDisp = typeSemaineDisp;
    	}
     
     
    	public String getNomUnite() {
    		return nomUnite;
    	}
     
    	public void setNomUnite(String nomUnite) {
    		this.nomUnite = nomUnite;
    	}
     
     
    }

    Donc, ce que je voudrais faire, dans un premier, c'est de récupérer pour une unité donné, récupérer tous les élements de la semaine qui lui sont rattaché
    Ensuite, je voudrais les jours de la semaine afin de connaitre les horaires des personnes qui sont rattachés à un service (lui-même rattaché à l'unité.

    j'ai fais cette fonction (qui marche) :
    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
     
    	public List<SemaineDisplay> getListSemaineDisp() {
     
    		List<SemaineDisplay> listSemaineDisp = new ArrayList<SemaineDisplay>();
    		List<SemaineDisplay> listSemaine = new ArrayList<SemaineDisplay>();
     
    		String queryString =
    				"select distinct semaine From Semaine as semaine " +
    						"join semaine.perssemainecompts as perssemainecompts " +
    						"join perssemainecompts.personne as personne "+
    						"join personne.service as service "+
    						"join service.unites as unite";
     
     
     
    		listSemaine = this.getHibernateTemplate().find(queryString);
     
    		return listSemaine;
    	}
     
     
     
    }
    mais je sais qu'il y a moyen de l'améliorer et d'optimiser ainsi le temps de chargement des pages u_u'.
    D'où mes questionnements en ce qui concerne le hql et le jpa.

    J'ai donc tout à fait lu les différents tuto (qui sont très instructifs) et j'ai essayé de les mettre en oeuvre, mais je n'y arrive pas.

    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
     
    public List<SemaineDisplay> getListSemaineDisp() {
     
    		List<SemaineDisplay> listSemaineDisp = new ArrayList<SemaineDisplay>();
    		List<SemaineDisplay> listSemaine = new ArrayList<SemaineDisplay>();
     
     
    		String queryString =
    				"SELECT distinct semaine.idSemaine, semaine.numeroSemaine, semaine.roulementSem, "+
    						"semaine.dateModif, semaine.dateDebutSem, semaine.dateFinSem, semaine.type, unite.nomUnite "+
    						"FROM Semaine as semaine, Unite as unite " +
    						"join semaine.perssemainecompts as perssemainecompts " +
    						"join perssemainecompts.personne as personne "+
    						"join personne.service as service "+
    						"join service.unites as unite";
     
     
    		listSemaine = this.getHibernateTemplate().find(queryString);
    		Iterator listSemaineIter = listSemaine.iterator();
    		while(listSemaineIter.hasNext()){
    			//String value = (String) listSemaineIter.next();
    			//System.out.println("vbalue : "+value);
    		}
     
    		return listSemaine;
    	}
    Ainsi, cette méthode, je pense récupérer des éléments de tables différentes mais je ne sais pas comment caster le résultat obtenu. En effet, je récupère des éléments de la table "semaine" et de la table "'unite"

    Merci beaucoup de votre aide

Discussions similaires

  1. [HQL] Requête SQL Native à mettre en HQL ou Criteria
    Par Igname dans le forum Hibernate
    Réponses: 2
    Dernier message: 20/11/2014, 00h01
  2. Conversion d'une requête SQL au HQL
    Par Fatemy dans le forum Hibernate
    Réponses: 0
    Dernier message: 24/08/2011, 04h11
  3. Convertir une requête SQL en requête HQL
    Par akharraz dans le forum Hibernate
    Réponses: 3
    Dernier message: 30/05/2011, 23h42
  4. Réponses: 2
    Dernier message: 24/08/2006, 11h02
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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