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 :

Affichage d'une liste dans JSP à partir d'une requête HQL


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut Affichage d'une liste dans JSP à partir d'une requête HQL
    Bonsoir tout le monde,
    Après recherche dans le forum, j'arrive toujours pas à résoudre mon problème malgrés qu'il y a des posts qui ressemble à mon problème, bref voici mes deux classes Personnel et PlanDeCharge:

    Personnel:
    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
     
    @Entity
    public class Personnel implements java.io.Serializable {
     
    	private static final long serialVersionUID = 930607645384966459L;
     
    	private Integer id_personnel;
    	private String civilite_personnel;
    	private String nom_personnel;
    	private String prenom_personnel;
    	private String nss_personnel;
    	private String date_naissance_personnel;
    	private String lieu_naissance_personnel;
    	private String nationalite_personnel;
    	private String email_personnel;
    	private String adresse_personnel;
    	private String ville_personnel;
    	private Integer code_postal_personnel;
    	private String pays_personnel;
    	private String date_recrutement_personnel;
    	private String date_sortie_personnel;
    	private String poste_personnel;
    	private String service_personnel;
    	private Integer salaire_base_personnel;
    	private String type_personnel;
    	private Boolean externe_personnel;
     
    //Getter & Setter...
    }
    PlanDeCharge:
    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
     
    @Entity
    public class PlanDeCharge implements java.io.Serializable {
     
    	private static final long serialVersionUID = 987730959483686419L;
     
    	private Integer id_plan_de_charge;
     
    	@OneToOne
    	@JoinTable(name="Personnel")
    	@JoinColumn(name="id_personnel")
    	private Integer id_personnel;
    	private String dim;
    	private String lun;
    	private String mar;
    	private String mer;
    	private String jeu;
    	private String ven;
    	private String sam;
    //Getter & Setter...
    }
    Ma fonction dans monDAOHibernateImpl.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public List<PlanDeCharge> getAllPlanDeCharge()
    	{
    		Query query = sessionFactory.getCurrentSession().createQuery("select p.id_personnel, p.nom_personnel, p.prenom_personnel, p.poste_personnel, p.service_personnel from Personnel as p, PlanDeCharge as pl where pl.id_personnel=p.id_personnel");
    		return query.list();
    	}
    et voici mon controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	@RequestMapping("/emploi_du_temps")
    	public ModelAndView plan_charge(HttpServletRequest request)
    	{	
    		String mon_nom = amirDAO.getNameUser();
    		request.setAttribute("nom_utilisateur", mon_nom);
    		ModelAndView mav = new ModelAndView("personnel/emploi_du_temps");
    		List<PlanDeCharge> plandecharge = amirDAO.getAllPlanDeCharge();
    		mav.addObject("SEARCH_PLANDECHARGE_RESULTS_KEY", plandecharge);
    		return mav;
    	}
    Sur ma JSP, lorsque j'essai d'afficher les enregistrement, j'ai mis ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <c:if test="${! empty SEARCH_PLANDECHARGE_RESULTS_KEY}">
    	<c:forEach var="plandecharge" items="${SEARCH_PLANDECHARGE_RESULTS_KEY}">	
    		<tr>
    			<td><c:out value=""></c:out></td>
    			<td><c:out value="${plandecharge.id_personnel}"></c:out></td>
    			<td><c:out value="${plandecharge.prenom_personnel}"></c:out></td>
    			<td><c:out value="${plandecharge.poste_personnel}"></c:out></td>
    			<td><c:out value="${plandecharge.service_personnel}"></c:out></td>
    			<td><c:out value="${plandecharge.date_recrutement_personnel}"></c:out></td>
    		</tr>
    	</c:forEach>
    </c:if>
    Ceci ne marche pas, et me renvoi la ligne d'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NumberFormatException: For input string: "id_personnel"
    Que dois-faire???
    Merci

  2. #2
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ta query hql n'a ni queue ni tête. Tu fais un jointure mais tu n'utilise pas la deuxième table, tu fait la liste des attributs à sélectionner, mais tu déclare retourner des objet, tu fait la query sur le personnel, mais tu déclare retourne des plans de charge. Si la méthode doit retourner une liste de plan de charge, c'est tout simplement cette query qu'il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public List<PlanDeCharge> getAllPlanDeCharge()
    	{
    		Query query = sessionFactory.getCurrentSession().createQuery("from PlanDeCharge");
    		return query.list();
    	}

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut
    Je souhaite afficher une liste de "Personnel" qui possède des plans de charge. Et donc voici ma reqête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public List<PlanDeCharge> getAllPlanDeCharge()
    {
    	Query query = sessionFactory.getCurrentSession().createQuery("from PlanDeCharge pl, Personnel p where pl.id_personnel=p.id_personnel");
    	return query.list();
    }
    Si j'utilise la requête que vous m'avez conseiller, je ne pourrai afficher que les informations de "PlanDeCharge" alors que je veux afficher la liste des "Personnel" qui ont déjà un enregistrement dans la table "PlanDeCharge"
    Dans les logs "Log4j" je vois bien les informations dont j'ai besoin, mais pour les récupérer et les afficher dans ma JSP je ne y arrive pas.

  4. #4
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Salut,

    - soit tu restes avec tes entités découplées et c'est à toi de gérer le mapping entre Personnel et PlanDeCharge et aussi virer ton annotation OneToOne qui est foireuse

    - soit tu modifies tes entités afin de pouvoir récupérer le Personnel depuis le plan de charge via @ManyToOne (plutot?) et un attribut de type Personnel plutôt que Integer

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut
    Merci pour la réponse Heimdal. Je suis vraiment novice dans ces technologies.
    Je crois que je vais choisir l'option n°2. Donc pour cela, je vais modifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @OneToOne
    @JoinTable(name="Personnel")
    @JoinColumn(name="id_personnel")
    private Integer id_personnel;
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @ManyToOne
    @JoinTable(name="personnel")
    private Personnel personnel;
    Dois-je enlever le champ "id_personnel"?
    Mais ensuite qu'est ce que je dois mettre dans la base pour mapper "private Personnel personnel;"??? Comment je vais déclarer ce champs dans la base?

    Merci d'avance

  6. #6
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Tu n as pas besoin de JoinTable mais plutot de JoinColumn.

    Une fois cela fait la requête de Tchize sera suffisante et tu auras bien une List<PlanDeCharge> et tu accédera simplement à ton Personne via ton getter

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/01/2015, 12h14
  2. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  3. Réponses: 1
    Dernier message: 11/07/2014, 08h58
  4. Réponses: 0
    Dernier message: 01/09/2012, 16h42
  5. Réponses: 3
    Dernier message: 14/08/2012, 10h24

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