je travail avec l'architecture MVC avec struts et hibernate ,donc actAction c'est l'action ou se trouve ma requette SQL
je travail avec l'architecture MVC avec struts et hibernate ,donc actAction c'est l'action ou se trouve ma requette SQL
Ca ne nous dit pas le code qui se trouve à la ligne concernée .... Mets le code complet et en gras la ligne en question
voici le code complet de mon action :
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 package com.dis.struts.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.hibernate.Query; import org.hibernate.Session; import com.dis.struts.Centre; import com.dis.struts.form.ActForm; import com.dis.struts.HibernateS; import com.dis.struts.Identification; import com.dis.struts.Personne; * XDoclet definition: * @struts.action path="/act" name="actForm" input="/act.jsp" scope="request" validate="true" * @struts.action-forward name="s" path="/act.jsp" */ public class ActAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ActForm actForm = (ActForm) form;// TODO Auto-generated method stub Session mySession = HibernateS.getSession(); List maList=mySession.createSQLQuery("SELECT pars.nom,pers.prenom,pers.identification.login,pers.identification.password from Personne pers ").list(); request.setAttribute("laListe", maList); return mapping.findForward("s"); } }
si je change la requette :
j'ai pas d'érreur et j'ai un affichage mais que celui de personne ,mais mon objectif c avoir personne avec identification (jointure entre personne et identification et le resultat sera retourné dans une liste )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 List maList=mySession.createSQLQuery("SELECT * from Personne ").addEntity(Personne.class).list(); request.setAttribute("laListe", maList); return mapping.findForward("s");
Ceci dit tu n'as pas tenu compte de ma remarque sur le SQLQuery...
Ni mis en gras la ligne de la NullPointer ....
execusez moi !!!
si j'ai essayé avec SQLQuery ça marche pas ,voici comme je l'est utilisé
et j'ai l'érreur suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 List maList=mySession.createQuery("SELECT * from Personne ").list(); request.setAttribute("laListe", maList);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 javax.servlet.ServletException: unexpected token: * near line 1, column 8 [SELECT * from com.dis.struts.Personne ] org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Normal ya pas de * en HQL ....
Je te conseille de lire un coup la doc de HQL (tape HQL sur tu l'auras de suite)
Tout à fait d'accord avec chtig et j'irais même plus loin:
http://www.hibernate.org
Tu y trouveras toutes les infos dont tu as besoin.
merci pour vos conseils et aides ,
jé vus la doc de hibernate.org ,ce que je cherche vraiment c'est la jointure sous hibernate ,je c pas si je peux travailler SQL classique sous hibernate???
Oui tu peux, mais autant utiliser HQL, à mon avis.
T'as essayé avec un "createQuery" et avec la requête que je t'avais donnée ?
(celle sans l'*)
oui j'ai essayé votre requette , comme si elle n'arrive pas a atteindre (identification) à partir de (personne)
j'ai fait:
j'ai l'érreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 List maList=mySession.createQuery("SELECT pers.nom,pers.prenom,pers.iden.login,pers.iden.password from Personne pers").list();
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 type Rapport d'exception message description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête. exception javax.servlet.ServletException: could not resolve property: iden of: com.dis.struts.Personne [SELECT pers.nom,pers.prenom,pers.iden.login,pers.iden.password from com.dis.struts.Personne pers] org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) cause mère org.hibernate.QueryException: could not resolve property: iden of: com.dis.struts.Personne [SELECT pers.nom,pers.prenom,pers.iden.login,pers.iden.password from com.dis.struts.Personne pers] org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43) org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:37) org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1265) org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279) org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:372) org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:539) org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:221) org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:172) org.hibernate.hql.ast.tree.DotNode.resolveFirstChild(DotNode.java:139) org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:462) org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1080) org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:1877) org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1821) org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1392) org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553) org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281) org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229) org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218) org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158) org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109) org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75) org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54) org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71) org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583) com.dis.struts.action.ActAction.execute(ActAction.java:61) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
je vous rajoute la classe personne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 package com.dis.struts; public abstract class AbstractPersonne implements java.io.Serializable { private Integer idUser; private String nom; private String prenom; private Identification iden; public Identification getIden() { return iden; } public void setIden(Identification iden) { this.iden = iden; } public AbstractPersonne() { } public AbstractPersonne(String nom, String prenom) { this.nom = nom; this.prenom = prenom; } public Integer getIdUser() { return this.idUser; } public void setIdUser(Integer idUser) { this.idUser = idUser; } public String getNom() { return this.nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return this.prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } }
Dans la précédente classe que tu nous as donnée, c'était identification et non iden.
C'est normal ?
j'ai toujour l'érreur
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 javax.servlet.ServletException: could not resolve property: Identification of: com.dis.struts.Personne [SELECT pers.nom,pers.prenom,pers.Identification.login,pers.Identification.password from com.dis.struts.Personne pers] org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) cause mère org.hibernate.QueryException: could not resolve property: Identification of: com.dis.struts.Personne [SELECT pers.nom,pers.prenom,pers.Identification.login,pers.Identification.password from com.dis.struts.Personne pers] org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43) org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:37) org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1265) org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279) org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:372) org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:539) org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:221) org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:172) org.hibernate.hql.ast.tree.DotNode.resolveFirstChild(DotNode.java:139) org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:462) org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1080) org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:1877) org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1821) org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1392) org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553) org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281) org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229) org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218) org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158) org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109) org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75) org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54) org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71) org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583) com.dis.struts.action.ActAction.execute(ActAction.java:61) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
peut étre ya un probléme avec la BDD ,
j'utilise MSQL2000 ,ma table personne contient les champs (idUser primary key,nom,prenom) et
la table identification contient les champs(code primary key,login,password,idUser)
la jointure que je veux c sur idUser
merci pour votre aide sans vous je serai perdue d'avantage
SVP est ce il ya quelqun qui peux me répondre ?
est ce qu'on doit modifier les fichiers .hbm.xml générés par hibérnate?afin de pouvoir faire des jointures
merci
ok je vois tout à fait ton problème
le truc c'est que tu n'a pas lu la documentation de hibernate
Ton cas est typiquement celui de l'exemple Personne/Adresse dans la documentation.
De plus tu loupes tout l'intérêt d'hibernate. hibernate a été créer pour ne plus s'encombrer avec du code sql en dur dans la couche de données!! Utilises criterai c'est vachement plus facile
Donc effectivement ton problème doit venir de tes fichiers de configurations qui sont utilisés par hibernate lors de la jointure
...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager