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

JSF Java Discussion :

aide hibernate jsf


Sujet :

JSF Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut aide hibernate jsf
    Boujour,

    Je suis nouvelle dans le monde de hibernate, j'essaye de réaliser une petite application d'authentification dans laquelle on saisie son login et mot de passe, on vérifie les données dans une base mysql, on récupère le profil de l'utilisateur, et selon ce profil on le dirige vers une page spécifique.

    Pour ceci j'utilise jsf avec hibernate et un serveur apache tomcat6 dans eclipse ganymede.

    le problème qui se pose est tel que :

    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
    ..... 22 févr. 2010 10:26:41 net.sf.hibernate.cfg.Configuration configure
    INFO: configuring from resource: /hibernate.cfg.xml
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.Configuration getConfigurationInputStream
    INFO: Configuration resource: /hibernate.cfg.xml
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.Configuration addResource
    INFO: Mapping resource: Compte.hbm
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.Binder bindRootClass
    INFO: Mapping class: test.hibernate.Compte -> compte
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.Configuration doConfigure
    INFO: Configured SessionFactory: null
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.Configuration secondPassCompile
    INFO: processing one-to-many association mappings
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.Configuration secondPassCompile
    INFO: processing one-to-one association property references
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.Configuration secondPassCompile
    INFO: processing foreign key constraints
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.SettingsFactory buildSettings
    ATTENTION: No dialect set - using GenericDialect: Dialect class not found: rg.hibernate.dialect.MySQL5InnoDBDialect
    22 févr. 2010 10:26:41 net.sf.hibernate.dialect.Dialect <init>
    INFO: Using dialect: net.sf.hibernate.dialect.GenericDialect
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.SettingsFactory buildSettings
    INFO: Use outer join fetching: true
    22 févr. 2010 10:26:41 net.sf.hibernate.connection.DriverManagerConnectionProvider configure
    INFO: Using Hibernate built-in connection pool (not for production use!)
    22 févr. 2010 10:26:41 net.sf.hibernate.connection.DriverManagerConnectionProvider configure
    INFO: Hibernate connection pool size: 20
    22 févr. 2010 10:26:41 net.sf.hibernate.connection.DriverManagerConnectionProvider configure
    INFO: using driver: org.gjt.mm.mysql.Driver at URL: jdbc:mysql://localhost:3306/login
    22 févr. 2010 10:26:41 net.sf.hibernate.connection.DriverManagerConnectionProvider configure
    INFO: connection properties: {user=root, password=}
    22 févr. 2010 10:26:41 net.sf.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
    INFO: No TransactionManagerLookup configured (in JTA environment, use of process level read-write cache is not recommended)
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.SettingsFactory buildSettings
    INFO: Use scrollable result sets: true
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.SettingsFactory buildSettings
    INFO: Use JDBC3 getGeneratedKeys(): true
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.SettingsFactory buildSettings
    INFO: Optimize cache for minimal puts: false
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.SettingsFactory buildSettings
    INFO: echoing all SQL to stdout
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.SettingsFactory buildSettings
    INFO: Query language substitutions: {}
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.SettingsFactory buildSettings
    INFO: cache provider: net.sf.hibernate.cache.EhCacheProvider
    22 févr. 2010 10:26:41 net.sf.hibernate.cfg.Configuration configureCaches
    INFO: instantiating and configuring caches
    22 févr. 2010 10:26:42 net.sf.hibernate.impl.SessionFactoryImpl <init>
    INFO: building session factory
    22 févr. 2010 10:26:42 net.sf.hibernate.impl.SessionFactoryObjectFactory addInstance
    INFO: Not binding factory to JNDI, no JNDI name configured

    je n'arrive pas à fixer la JNDI !!!!

    mon la fonction de vérification que j'utilise est :

    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
    public String Role() throws Exception 
    	{
    		SessionFactory sf =new Configuration().configure().buildSessionFactory();
    		Session session =sf.openSession();
    		String role = null;
    		try{
    		    //tx = session.beginTransaction();
     
     
    		    List list = session.find("select * from login.compte where login='"+getLogin()+"' and pwd='"+getPwd()+"'");
     
    		    Iterator it = list.iterator();
     
    		    while(it.hasNext()){
    		    	Compte compte = (Compte)it.next();
    		    	role=""+compte.getRole()+"";}
    		}catch(Exception e)
    		{}
    		 session.close();
    		 if(role!= null) return role;
    		 else return "notfound";
    	}

    ma base de données login contient une table Compte de 4 champ :

    id
    login
    mdp
    role

    Je serais reconnaissante si j'obtiens une aide

    Merci d'avance !!

  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 : 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
    Par défaut
    c'est quoi ton problème, le dernier message d'info? Dans la pluspart des cas on s'en fou un peu, on n'utilise pas le jndi pour hibernate (d'ailleurs c'est juste un message d'info). Sinon, il suffit de configurer le jndi name dans ton fichier de config hibernate et ce sera fait. Dans tous les cas, ca a rien a voir avec le code que t'as posté.

  3. #3
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut
    Je pense avoir mal expliqué mon problème, alors le voila : pour une authentification quelconque, j'obtiens le résultat "not found", donc il n'execute pa la requete en question. je n'arrive pas à detecter le problème. J'ai pensé que c'était la JND....mais ce n'est pas ca apparemment!!!!

    Merci

  4. #4
    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 : 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
    Par défaut
    remplace déjà cette horreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		}catch(Exception e)
    		{}
    Par du code qui traite l'exception

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		}catch(Exception e)
    		{ e.printStackTrace();}
    et donne nous l'exception

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Par défaut
    Salut,
    Le problème pourrait venir de ta requête, elle n'est pas bien écrite.
    "select * from login.compte where login='"+getLogin()+"' and pwd='"+getPwd()+"'"
    Ceci ne correspond pas à une requête HQL.
    Essaie celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "select c from  Compte c where c.login = " + getLogin() + " and c.pwd = " + getPwd()
    Je voudrais aussi te faire remarquer que les "net.sf.hibernate..." dans les noms de packages signifient que tu utilises une très vieille version de Hibernate, tu devrait plutôt prendre une version plus récente pour éviter de tomber dans de problèmes quand tu ferais d'autres exemples.

  6. #6
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut
    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
    public String Role() throws Exception 
    	{
    		SessionFactory sf =new Configuration().configure().buildSessionFactory();
    		Session session =sf.openSession();
     
    		Transaction tx = null;
    		String role = null;
    		try{
    		  tx = session.beginTransaction();
     
     
    		    List list = session.find("select login,role from compte where Login='"+getLogin()+"' and pwd='"+getPwd()+"'");
     
    		    Iterator it = list.iterator();
     
    		    while(it.hasNext()){
    		    	Compte compte = (Compte)it.next();
    		    	role=""+compte.getRole()+"";}
    		tx.commit();
     
    		}catch(Exception e)
    		{ e.printStackTrace();
                     }
     
    		 session.close();
     
     
    		 if(role!= null) return role;
    		 else return "notfound";
    	}
    j'obtiens comme exception :

    net.sf.hibernate.QueryException: undefined alias: login [select login,role from compte where Login='sara' and pwd='sara']

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Par défaut
    Tu as essayé la requête que j'ai donnée ci-haut ? Qu'est-ce que ça donne?
    En tout cas, tes requêtes ne définissent pas d'alias, et c'est de là que vient le problème.
    Il faudrait bien revoir la syntaxe HQL.

  8. #8
    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 : 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
    Par défaut
    session.find prend un requete HQL, tu dois donc utiliser des objets dans ta requetes, pas des tables. Je te suggère de commencer par ouvrir un bouquin ou un tutoriel sur hibernate récente pour apprendre comment on fait un requete HQL.

  9. #9
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut
    J'utilise votre requete.
    Voila ce que j'obtien mnt. il ne reconnai pas les propriétés du javabean.


    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
     could not resolve property: login of: test.hibernate.Compte [select c from  test.hibernate.Compte c where c.login = sara and c.pwd = sara]
    	at net.sf.hibernate.persister.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
    	at net.sf.hibernate.hql.PathExpressionParser.getPropertyType(PathExpressionParser.java:249)
    	at net.sf.hibernate.hql.PathExpressionParser.end(PathExpressionParser.java:288)
    	at net.sf.hibernate.hql.WhereParser.doPathExpression(WhereParser.java:336)
    	at net.sf.hibernate.hql.WhereParser.doToken(WhereParser.java:366)
    	at net.sf.hibernate.hql.WhereParser.token(WhereParser.java:251)
    	at net.sf.hibernate.hql.ClauseParser.token(ClauseParser.java:87)
    	at net.sf.hibernate.hql.PreprocessingParser.token(PreprocessingParser.java:123)
    	at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:29)
    	at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:149)
    	at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:138)
    	at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:294)
    	at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1562)
    	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1533)
    	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1521)
    	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1513)
    	at test.hibernate.Compte.Role(Compte.java:97)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
    	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
    	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:71)
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:95)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:384)
    	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:452)
    	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:764)
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
    	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    	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:293)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    	at java.lang.Thread.run(Unknown Source)
    23 févr. 2010 09:20:33 com.sun.faces.application.NavigationHandlerImpl getViewId
    ATTENTION: "JSF1013: Unable to find matching navigation case from view ID '/login.jsp' for outcome '' and action '#{login.Role}'

  10. #10
    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 : 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
    Par défaut
    bon alors

    1) prend un version récente de hibernate. net.sf.hibernate, c'est du hibernate 2, ca fait déjà quelques années que ces apis sont dépréciées
    2) on ne connais pas ta classe compte, on ne connais donc pas ses proprités. A toi d'adapter ta requete pour qu'elle pointe sur les propriété de ta classe comtpe
    4) utilise des requete paramétrée, sinon le premier user qui utiliser un mot de passe du genre blablabla" OR compte.user=="admin" pourra s'authentifier comme un admin (pas cool) (voir les docs sur le sql injection)

  11. #11
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut
    Merci infiniment pour votre aide précieuse . ça a marché finalement.

  12. #12
    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 : 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
    Par défaut
    n'oubliez pas de cliquer sur

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

Discussions similaires

  1. aide sur jsf+jbpm SVP
    Par belha00 dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 17/04/2009, 17h04
  2. eclipse hibernate JSF 1.2
    Par Pirion dans le forum Hibernate
    Réponses: 3
    Dernier message: 08/04/2009, 17h28
  3. Aide Hibernate pour mapper ma relation ?
    Par Limod dans le forum Hibernate
    Réponses: 5
    Dernier message: 24/05/2006, 12h42
  4. Hibernate-JSF
    Par zakjo_developper dans le forum Hibernate
    Réponses: 7
    Dernier message: 10/05/2006, 11h32

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