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 :

Problème jstl et hibernate


Sujet :

Hibernate Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut Problème jstl et hibernate
    Bonjour,

    Je travaille actuellement sur un projet Spring sur Eclipse Ganymède,
    J'utilise les annotations hibernate.
    Avant de vous montrer le code et vous évoquer mon souci, je vous donne les versions de mes différents outils :
    Eclipse 3.4.1
    Tomcat 6.0
    JEE 1.5
    Spring 2.5.6
    Hibernate 3
    et jstl 1.1.

    Ca c'est fait ! Pour le reste :

    J'envoie à ma jsp une List, que j'essaie d'exploiter dans un c:forEach...
    Malheureusement, je ne peux pas accéder aux attributs des objets de cette liste...

    Voila les extraits importants de ma jsp :

    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
    <%@ page import="java.util.List"%>
    <%@ page import="com.xxx.beans.Collab"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title></title>
    		<link rel="stylesheet" href="./Styles/style1.css"/>
    		<link rel="stylesheet" href="./Styles/style0.css"/>
    		<script language="javascript" src="./Scripts/Annuaire.js"></script>
    </head>
    <body >
    <table  border="0" cellspacing="0" cellpadding="0" >
          <thead class="fixedHeader">                    
    		<tr class="entete" >
    			<th class="gch"></th>
    			<th class="middle">Nom</th>
                    </tr>
            </thead>
    	<tbody class="scrollContent">	
    <c:forEach var="collab" items="${Recherche}" varStatus="count">					
    		<tr class="listbox" id="<c:out value='${count.index}'/>">
                         <td><c:out value="${collab.nom}"/></td>
    	        </tr> 
    </c:forEach>												
        </tbody>
    </table>
    </html>
    Les instances d'objet dans ma liste sont de type Collab :

    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
     
    import java.io.Serializable;
    import javax.persistence.*;
     
    @Entity
    @Table(name="Collab")
    public class Collab implements  Serializable {
     
        private static final long serialVersionUID = 1L;
        private String nom = "";
     
      @Column(name="NOM")
      public String getNom() {
    		  return nom;
      }
     
      public void setNom(String nom) {
        this.nom = nom;
      }
    }
    Bref, je sais que ma liste n'est pas vide car si je fais dans mon c:forEach <c:out value="${collab}"/>, j'ai l'id de l'instance qui s'affiche bien sur ma page...

    mais ici je veux accéder à l'attribut nom
    et j'ai droit à :

    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
     
    GRAVE: "Servlet.service()" pour la servlet ControllerServlet a g�n�r� une exception
    org.apache.jasper.JasperException: An exception occurred processing JSP page /Pages/MajCollabFiltre.jsp at line 107
     
    104: 										<tbody class="scrollContent">	
    105: 	<c:forEach var="collab" items="${Recherche}" varStatus="count">					
    106: 											<tr class="listbox" id="<c:out value='${count.index}'/>">
    107:                     							<td><c:out value="${collab.nom}"/></td>
    108: 											</tr> 
    109: 	</c:forEach>												
    110: 										</tbody>
     
     
    Stacktrace:
    	at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
    	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    	at com.xxx.servlet.ControlServlet.doProcess(ControlServlet.java:137)
    	at com.xxx.servlet.ControlServlet.doPost(ControlServlet.java:73)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Thread.java:595)
    Désolé pour l'encodage

    Merci d'avance si quelqu'un a une piste !

    Yudge.

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Je n'utilise pas Hibernate mais, pour pouvoir afficher le contenu de la List avec le code que tu as mis dans la jsp, il faudrait que Recherche soit une List d'objets de type Collab.

    Pour cela, je crois qu'il faut que la createQuery soit du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List Recherche=session.createQuery("from Collab").list();

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut
    Merci pour cette réponse.

    Ma liste est remplie comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Collab> collabs = template.find("from Collab c")
    template étant de type HibernateTemplate...

    je l'envoie à ma jsp, depuis ma servlet, grâce à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    req.setAttribute("Recherche", collabs);
    et sur ma jsp j'ai déjà tenté :

    &{requestScope.Recherche}
    et
    &{requestScope.['Recherche']}

    même résultat...

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je dirais que si tu as une erreur à la ligne 107, c'est que la liste a été trouvée, mais qu'elle ne contient peut-être pas des objets "Collab".

    Peux-tu, dans un premier temps, remplacer le <c:out value="${collab.nom}"/> par <c:out value="${collab.getClass().getName()}"/> ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Tu n'as apparemment pas de problème pour lire la List Recherche puisque tu as dit dans ton premier post qu'en codant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:forEach var="collab" items="${Recherche}" varStatus="count">
      <c:out value="${collab}"/>	
    </c:forEach>
    ça afffichait quelque chose.

    Par contre, si template.find("from Collab c") renvoie bien une List d'objets de type Collab, je ne vois pas pourquoi tu n'arrives pas à l'afficher.

    Peux-tu donner le message d'erreur complet ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut
    Merci d'être aussi rapides.

    Voila ce que j'ai quand je teste ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:forEach var="collab" items="${Recherche}" varStatus="count">
      <c:out value="${collab}"/>	
    </c:forEach>
    Ca m'affiche : [Ljava.lang.Object;@d57bcb

    Je n'ai pas plus de log de l'erreur !

    Et sinon pour le <c:out value="${collab.getClass().getName()}"/>

    j'ai droit à :

    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
    GRAVE: "Servlet.service()" pour la servlet jsp a lanc� une exception
    org.apache.jasper.JasperException: /Pages/MajCollabFiltre.jsp(108,31) The function getClass must be used with a prefix when a default namespace is not specified
    	at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    	at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    	at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor$1FVVisitor.visit(Validator.java:1480)
    	at org.apache.jasper.compiler.ELNode$Function.accept(ELNode.java:129)
    	at org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200)
    	at org.apache.jasper.compiler.ELNode$Visitor.visit(ELNode.java:242)
    	at org.apache.jasper.compiler.ELNode$Root.accept(ELNode.java:56)
    	at org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor.validateFunctions(Validator.java:1505)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1141)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:821)
    	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1512)
    	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:840)
    	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1512)
    	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
    	at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
    	at org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
    	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    	at org.apache.jasper.compiler.Validator.validate(Validator.java:1739)
    	at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:166)
    	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
    	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
    	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
    	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
    	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    	at com.xxx.servlet.ControlServlet.doProcess(ControlServlet.java:113)
    	at com.xxx.servlet.ControlServlet.doGet(ControlServlet.java:64)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Thread.java:595)
    13 mai 2009 12:02:21 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet ControllerServlet a g�n�r� une exception
    org.apache.jasper.JasperException: /Pages/MajCollabFiltre.jsp(108,31) The function getClass must be used with a prefix when a default namespace is not specified
    	at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    	at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    	at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor$1FVVisitor.visit(Validator.java:1480)
    	at org.apache.jasper.compiler.ELNode$Function.accept(ELNode.java:129)
    	at org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200)
    	at org.apache.jasper.compiler.ELNode$Visitor.visit(ELNode.java:242)
    	at org.apache.jasper.compiler.ELNode$Root.accept(ELNode.java:56)
    	at org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor.validateFunctions(Validator.java:1505)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1141)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:821)
    	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1512)
    	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
    	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:840)
    	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1512)
    	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
    	at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
    	at org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
    	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    	at org.apache.jasper.compiler.Validator.validate(Validator.java:1739)
    	at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:166)
    	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
    	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
    	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
    	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
    	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    	at com.xxx.servlet.ControlServlet.doProcess(ControlServlet.java:113)
    	at com.xxx.servlet.ControlServlet.doGet(ControlServlet.java:64)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Thread.java:595)

  7. #7
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:out value="${collab.class.name}"/>

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut
    Ah, alors avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:out value="${collab.class.name}"/>
    Je n'ai rien qui s'affiche sur ma jsp,
    pourtant, je vois grâce au count.index que j'ai des éléments dans ma List...

    J'avais utilisé une Collection au départ, ça serait mieux ?

  9. #9
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Si c'était bien une List d'objets de type Collab, il devrait t'afficher nomdupackage.Collab.

    Une List, c'est très bien mais manifestement, template.find("from Collab c") ne renvoie pas ce que tu attends.
    Bizarre que tu n'aies pas d'erreur sur ce code-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Collab> collabs = template.find("from Collab c")

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut
    D'accord, deja c'est un premier pas...

    Je tiens à vous montrer la requete en entier, car finalement je me demande si je n'ai pas fait un melange SQL, HQL...

    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
        	List<Collab> collabs = null;
     
    		String clauseWhere="";
     
    		if(!"".equals(nom))
    			clauseWhere += " c.nom LIKE '"+ nom +"%' AND "; 
     
    		if(!"".equals(societe))
    			clauseWhere += " s.libabr LIKE '"+ societe +"%' AND "; 
     
    		if(!"".equals(service))
    			clauseWhere += " c.serv.cserv LIKE '"+ service +"%' AND "; 
     
    		if(!"".equals(initof))
    			clauseWhere += " c.initof LIKE '"+ initof +"%' AND "; 
     
    		if(!"".equals(local))
    			clauseWhere += " c.local LIKE '"+ local +"%' AND "; 
     
    		if(!"".equals(tel))
    			clauseWhere += " c.teleph LIKE '"+ tel +"%' AND "; 
     
    		if(!"".equals(badge))
    			clauseWhere += " c.cbadacc LIKE '"+ badge +"%' AND "; 
     
    		if(!"".equals(monet))
    			clauseWhere += " c.profilmon LIKE '"+ monet +"%' AND "; 
     
    		collabs = template.find("from Collab c, Societe s where "+ clauseWhere +" c.ccollab is not null order by c.nom, s.libabr, c.serv.cserv" );
    c'est moche ou pas ?

    Voila ce que j'ai en console :
    Hibernate: select collab0_.CCOLLAB as CCOLLAB0_0_, societe1_.CSOC as CSOC2_1_, collab0_.CBADACC as CBADACC0_0_, collab0_.ESPCOM as ESPCOM0_0_, collab0_.ETACIV as ETACIV0_0_, collab0_.INITOF as INITOF0_0_, collab0_.LOCAL as LOCAL0_0_, collab0_.NOM as NOM0_0_, collab0_.PRENOM as PRENOM0_0_, collab0_.PROFILMON as PROFILMON0_0_, collab0_.CSERV as CSERV0_0_, collab0_.CSOC as CSOC0_0_, collab0_.TELEPH as TELEPH0_0_, collab0_.TITRE as TITRE0_0_, societe1_.LBSOC as LBSOC2_1_, societe1_.LIBABR as LIBABR2_1_ from Collab collab0_, SOCIETE societe1_ where (collab0_.NOM like 'pe%') and (collab0_.CCOLLAB is not null) order by collab0_.NOM, societe1_.LIBABR, collab0_.CSERV

  11. #11
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Manifestement, c'est un problème de requête Hibernate.
    Je ne vais donc pas pouvoir te dépanner mais OButterlin va pouvoir prendre le relais.

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Yudge Voir le message
    ...
    c'est moche ou pas ?
    Ben, si tu veux mon avis... oui !
    Quand on veut faire de la requête en HQL, on utilise plus spécialement un objet Criteria, un peu comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Criteria query = session.createCriteria(MaClasseCible.class);
    if (parametre1 != null && parametre1.trim().length() > 0)
    {
       query.add(Expression.ilike("nomColonne", parametre1);
    }
    ...
    return query.list();
    Pourrais-tu montrer le code complet de la classe Collab parce que d'après la requête exécutée, elle paraît incomplète...

    Normalement, "from Classe1, Classe2" devrait renvoyer une liste de tableau d'objet, peux-tu vérifier (avec le debogger) ce que tu as exactement dans la liste ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut
    Pour le Criteria, je compte l'utiliser en effet.

    Je voudrais comprendre quand même le souci ci présent :p

    voila ma classe Collab complète :

    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
    165
    166
    167
    168
     
    @Entity
    @Table(name="Collab")
    public class Collab implements  Serializable {
     
        private static final long serialVersionUID = 1L;
        private String ccollab = "";
        private String nom = "";
        private String prenom = "";
        private String etatciv = "";    
        private String teleph = "";
        private String local = "";
        private String espcom = "";    
        private String initof = "";    
        private String titre = "";  
        private String profilmon = "";
        private String cbadacc = "";
        private Service serv = null;
        private Societe soc = null;
     
      public Collab(String ccollab, String nom, String prenom, String etatciv, String teleph, String local, String espcom, String initof, String titre, String profilmon, String cbadacc, Service serv, Societe soc) {
    	  this.ccollab = ccollab;
    	  this.nom = nom;
    	  this.prenom = prenom;
    	  this.etatciv = etatciv;
    	  this.teleph = teleph;
    	  this.local = local;
    	  this.espcom = espcom;
    	  this.initof = initof;
    	  this.titre = titre;
    	  this.profilmon = profilmon;
    	  this.cbadacc = cbadacc;
    	  this.serv = serv;
    	  this.soc = soc;
      }
     
      public Collab() {
     
      }
     
      /** METHODE getCcollab() : Retourne le code collab */
      @Id
      @Column(name="CCOLLAB", unique = true, nullable = false)
      public String getCcollab() {
    		return ccollab;
      }
      /** METHODE setCcollab() : Affecte le code collab */
      public void setCcollab(String ccollab) {
        this.ccollab = ccollab;
      }
     
      @Column(name="NOM")
      public String getNom() {
    		  return nom;
      }
      /** METHODE setNom() : Affecte le nom*/
      public void setNom(String nom) {
        this.nom = nom;
      }
     
      @Column(name="PRENOM")
      /** METHODE getPrenom() : Retourne le prenom  */
      public String getPrenom() {
        	return prenom;
      }
      /** METHODE setPrenom() : Affecte le prenom  */
      public void setPrenom(String prenom) {
        this.prenom = prenom;
      }
     
      @ManyToOne(fetch=FetchType.LAZY)
      @JoinColumn(name="CSERV", nullable=false)
      /** METHODE getServ() : Retourne le service associé au collaborateur */
      public Service getServ() {
        	return serv;
      }
      /** METHODE setServ() : Affecte le service associé au collaborateur */
      public void setServ(Service serv) {
        this.serv = serv;
      }
     
      @ManyToOne(fetch=FetchType.LAZY)
      @JoinColumn(name="CSOC", nullable=false)
      /** METHODE getSoc() : Retourne la societe associée au collaborateur */
      public Societe getSoc() {
    	    	return soc;
      }
     
      /** METHODE setSoc() : Affecte  la societe associée au collaborateur */
      public void setSoc(Societe soc) {
    	this.soc = soc;
      }
      /** METHODE setEtatciv() : Retourne l'état civil  */
      public void setEtatciv(String etatciv) {
          this.etatciv = etatciv;
      }
      @Column(name="ETACIV")
      /** METHODE getEtatciv() : Affecte l'état civil  */
      public String getEtatciv() {
    		  return etatciv;
      }  
     
      /** METHODE setTeleph() : Retourne le téléphone  */
      public void setTeleph(String teleph) {
          this.teleph = teleph;
      }
      @Column(name="TELEPH")
      /** METHODE getTeleph() : Affecte le téléphone  */
      public String getTeleph() {
        	  return teleph;
      }
     
      /** METHODE setLocal() : Retourne la localisation  */
      public void setLocal(String local) {
          this.local = local;
      }
      @Column(name="LOCAL")
      /** METHODE getLocal() : Affecte la localisation  */
      public String getLocal() {
        	  return local;
      }
      /** METHODE setEspcom() : Retourne l'espace communication  */
      public void setEspcom(String espcom) {
          this.espcom = espcom;
      }
      @Column(name="ESPCOM")
      /** METHODE getEspcom() : Affecte l'espace communication   */
      public String getEspcom() {
    		  return espcom;
      }
      /** METHODE setInitof() : Retourne les initiales officielles   */
      public void setInitof(String initof) {
          this.initof = initof;
      }
      @Column(name="INITOF")
      /** METHODE getInitof() : Affecte les initiales officielles  */
      public String getInitof() {
        	  return initof;
      }
      /** METHODE setTitre() : Retourne le titre  */
      public void setTitre(String titre) {
          this.titre = titre;
      }
      @Column(name="TITRE")
      /** METHODE getTitre() : Affecte le titre  */
      public String getTitre() {
        	  return titre;
      }  
      /** METHODE setProfilmon() : Retourne le profil   */
      public void setProfilmon(String profilmon) {
          this.profilmon = profilmon;
      }
      @Column(name="PROFILMON")
      /** METHODE getProfilmon() : Affecte le profil  */
      public String getProfilmon() {
        	  return profilmon;
      }
      /** METHODE setCbadacc() : Retourne le code badge  */
      public void setCbadacc(String cbadacc) {
          this.cbadacc = cbadacc;
      }
      @Column(name="CBADACC")
      /** METHODE getCbadacc() : Affecte le code badge  */
      public String getCbadacc() {
          return cbadacc;
      }    
     
    }
    normalement ça c'est pas trop "moche"...

    Et sinon le debugger m'affiche List<E> lorsque je regarde ma Liste, qui contient des Object...
    Je pense qu'en effet mon souci vient du fait que je fais une requete sur Deux types d'objets à la fois

    Petit "edit"... j'ai retiré l'objet Societe de ma requete et en effet la cela fonctionne, j'ai un collègue qui me conseille d'utiliser "inner join fetch" dans ma requête.
    Pertinent ?

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut
    Pertinent en effet, ça fonctionne mieux maintenant, merci à vous d'avoir étés aussi actifs. Faut vraiment que je me plonge dans hibernate...

    C'est The_y@m's qui va bien rigoler en voyant ces posts...

    Je passe au Criteria maintenant !
    *RESOLVED*...

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Yudge Voir le message
    Petit "edit"... j'ai retiré l'objet Societe de ma requete et en effet la cela fonctionne, j'ai un collègue qui me conseille d'utiliser "inner join fetch" dans ma requête.
    Pertinent ?
    Oui, pour l'optimisation de la requête
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [Data] Problème de mapping hibernate
    Par erwan.bodere dans le forum Spring
    Réponses: 1
    Dernier message: 28/04/2007, 20h43
  2. problème de session Hibernate
    Par Smix007 dans le forum Hibernate
    Réponses: 6
    Dernier message: 11/12/2006, 14h29
  3. [tomcat] problème de configuration hibernate
    Par bastouffe dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 28/11/2006, 13h18
  4. [tomcat 5.5] problème de configuration hibernate
    Par bastouffe dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 27/11/2006, 13h54
  5. Problème Eclipse, Oracle & Hibernate Synchronizer
    Par Cenrok dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 23/11/2006, 22h10

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