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 :

impossible de supprimer avec hibernate + JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Par défaut impossible de supprimer avec hibernate + JSF
    Bonjour,
    Voilà je travaille sur un projet hibernate, jsf 2.0 le tout sous netbeans 6.8.
    J'aimerais supprimer un enregistrement de ma table et mon code ne fonctionne pas et je ne comprends pas pourquoi.

    Les enregistrements de ma table sont stockées dans une data table dans ma page jsf.

    Voici ce que j'ai pu faire pour supprimer :

    la classe Authentification.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
    public class Authentification  implements java.io.Serializable {
     
     
         private int idauth;
         private String loginauth;
         private String passauth;
     
        public Authentification() {
     
        }
     
     
        public Authentification(int idauth) {
            this.idauth = idauth;
        }
        public Authentification(int idauth, String loginauth, String passauth) {
           this.idauth = idauth;
           this.loginauth = loginauth;
           this.passauth = passauth;
        }
     
    /*@Id
    @GeneratedValue*/
        public int getIdauth() {
            return this.idauth;
        }
     
        public void setIdauth(int idauth) {
            this.idauth = idauth;
        }
        public String getLoginauth() {
            return this.loginauth;
        }
     
        public void setLoginauth(String loginauth) {
            this.loginauth = loginauth;
        }
        public String getPassauth() {
            return this.passauth;
        }
     
        public void setPassauth(String passauth) {
            this.passauth = passauth;
        }
     
        public String clear(){
                        idauth=0;
                        loginauth="";
                        passauth="";
                        return "clear";
                    }
     
     
    }
    -----------------------------------------------------------------------
    Ma fonction de supression dans ma classe AuthHelper :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        public void delete(){
            Authentification authentif = new Authentification();
            if (authentif != null){
                int id = authentif.getIdauth();
                org.hibernate.Transaction tx =session.beginTransaction();
                Query query = session.createQuery ("delete from Authentification as a where"+"a.idauth=:id");
                query.setInteger("id", id);
                int rowCount = query.executeUpdate();
                tx.commit();
                System.out.println("Rows affected :"+rowCount);
                authentif.clear();
                getAuthentication(); // La fonction qui affiche les enregistrements de la table
            }
        }
    --------------------------------------------------------------------------
    mon managed bean : AuthBean
    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
    package Authentif;
     
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import java.util.List;
     
    public class AuthBean {
     
        AuthHelper helper= new AuthHelper();;
        private Authentification auth= new Authentification();
        List<Authentification> authList;
     
        public AuthBean() {
     
        }
     
    public Authentification getAuth(){return auth;}
        public void setAuth(Authentification auth){this.auth=auth;}
     
    public String deleteAuth() {
    authentication.getRowData();
    	helper.delete();
    	return "index";
    }
    -------------------------------------------------------------------------
    Ma page jsf :

    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
    <h:body>
    <h:form>
                <h:dataTable value="#{AuthBean.getAuthen()}" var="item" border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px">
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="idauth"/>
                            </f:facet>
                            <h:outputText value="#{item.idauth}"/>
                        </h:column>
     
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="login"/>
                            </f:facet>
                            <h:outputText value="#{item.loginauth}"/>
                        </h:column>
     
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="mot de passe"/>
                            </f:facet>
                            <h:outputText value="#{item.passauth}"/>
                        </h:column>
     
                    <h:column>
                            <f:facet name="header">
                                <h:outputText value=" "/>
                            </f:facet>
                            <h:commandButton action="#{AuthBean.UpdateAuth}" value="Modifer"/>
     
                        </h:column>
     
                    <h:column>
                            <f:facet name="header">
                                <h:outputText value=" "/>
                            </f:facet>
                            <h:commandButton action="#{AuthBean.deleteAuth}" value="Supprimer"/>
     
                        </h:column>
    </h:dataTable>
     
                    <br/>
     
                    <h:commandLink action="#{AuthBean.NextPage}" value="next"/>
                </h:form>
        </h:body>
    -------------------------------------------------------------------------
    Je vous serait très reconnaissante de toute l'aide apportée.

  2. #2
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Par défaut
    Voilà j'ai oublié de mentionner l'erreur qui me parait :

    java.lang.IllegalArgumentException: node to traverse cannot be null!
    ---------------------------------------------------------------------------

    javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: node to traverse cannot be null!
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIData.broadcast(UIData.java:912)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.IllegalArgumentException: node to traverse cannot be null!
    at org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:31)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:254)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
    at $Proxy111.createQuery(Unknown Source)
    at Authentif.AuthHelper.delete(AuthHelper.java:58)
    at Authentif.AuthBean.deleteAuth(AuthBean.java:65)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
    at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    ... 33 more

  3. #3
    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
    Tu as une erreur dans ta requête, il manque un blanc entre where et a.idauth
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session.createQuery ("delete from Authentification as a where " + "a.idauth=:id");
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Par défaut
    Comment ça un blanc je n'ai pas compris.
    Je m'excuse mais pourriez vous m'expliquer d'avantage svp? merci

  5. #5
    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
    Voilà le code que tu as fourni
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    session.createQuery ("delete from Authentification as a where"+"a.idauth=:id");
    ...
    Ce qui induit une requête exécutée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "delete from Authentification as a wherea.idauth=:id"
    Il manque un blanc entre where et a.idauth, ce qui va provoquer une erreur à l'exécution de la requête.
    (C'est plus clair ?)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Par défaut
    oui oui merci bcp. Je n'ai pas fait attention.
    Mais pour data table de ma page jsf me faudra-t-il un astuce pour récupérer la ligne active de la data table ou bien cela se fait automatiquement?

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

Discussions similaires

  1. Pb avec Hibernate : impossible de persister mon entité
    Par Atatorus dans le forum GWT et Vaadin
    Réponses: 5
    Dernier message: 17/02/2009, 23h39
  2. impossible de supprimer avec removeMovieClip
    Par starr dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 10/11/2008, 22h20
  3. pb d'utilisation JBoss avec richFaces + JSF + Hibernate
    Par psycho_xn dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 06/11/2008, 22h54
  4. intégration de jsf avec hibernate
    Par delivrance84 dans le forum JSF
    Réponses: 1
    Dernier message: 20/07/2008, 21h23
  5. Connexion à la base impossible avec hibernate
    Par jason69 dans le forum Hibernate
    Réponses: 3
    Dernier message: 29/06/2007, 14h23

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