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 :

probleme de mapping hibernate


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Homme Profil pro
    Consultant OpenERP /J2EE
    Inscrit en
    Février 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant OpenERP /J2EE
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 19
    Par défaut probleme de mapping hibernate
    salut pour tout le monde :
    j'ai un classe Document qui contient deux Collection :Collection lignesDocument; Collection paiementDocument.
    -mapping de Document :
    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
    <class name="ClassesJava.Document" table="DOCUMENT">
    ...
    <set cascade="all,delete-orphan" name="lignesDocument" order-by="NUMERO_LIGNE" table="LIGNE_COMMANDE">
          <key>
            <column name="NUMERO_PIECE"/>
            <column name="DOCUMENT_TYPE"/>
          </key>
          <one-to-many class="ClassesJava.LigneDocument"/>
        </set>
        <set   cascade="all,delete-orphan"  name="paiementDocument"  table="PAIEMENT_DOCUMENT">
          <key>
            <column name="NUMERO_PIECE"/>
            <column name="DOCUMENT_TYPE"/>
          </key>
          <one-to-many class="ClassesJava.PaiementDocument"/>
        </set>
    ..
    </class>
    -mapping de lignesDocument:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <class name="ClassesJava.LigneDocument" table="LIGNE_DOCUMENT">
    ...
    <many-to-one class="ClassesJava.Document" name="document">
          <column name="NUMERO_PIECE"/>
          <column name="DOCUMENT_TYPE"/>
        </many-to-one>
     
      </class>
    -mapping de paiementDocument:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      <class name="ClassesJava.PaiementDocument" table="PAIEMENT_DOCUMENT" lazy="false">
    ...
    <many-to-one class="ClassesJava.Document" insert="false" name="document" update="false">
        <column name="NUMERO_PIECE"/>
          <column name="DOCUMENT_TYPE"/>
        </many-to-one>
      </class>

    si je veux supprimer un document il doit supprimer les lignes de document et les paiement associés a ce document : ca marche avec les lignes de document mais il ne supprime pas les paiements et m'affiche l'erreur suivante :
    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
     
    org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [ClassesJava.PaiementDocument#ClassesJava.PaiementDocument@ae8f9c]
            at org.hibernate.impl.SessionImpl.forceFlush(SessionImpl.java:1014)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:165)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
            at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
            at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
            at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:218)
            at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)
            at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)
            at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
            at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)
            at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)
            at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)
            at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
            at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
            at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:131)
            at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:122)
            at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65)
            at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
            at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
            at gestioncommerciale.Commande_Client.supprimerDocument(Commande_Client.java:2430)
            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.apache.el.parser.AstValue.invoke(AstValue.java:191)
            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:77)
            at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
            at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
            at javax.faces.component.UICommand.broadcast(UICommand.java:383)
            at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
            at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
            at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
            at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
            at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
            at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
            at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
            at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
            at com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.execute(PartialTraversalLifecycle.java:94)
            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.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
            at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
            at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
            at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
            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:127)
            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:298)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
            at java.lang.Thread.run(Thread.java:619)
    la fonction de suppression et la suivante (je croit que c'est correcte car si je supprime un document qui ne contient pas des paiement ca marche bien )
    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
    public void supprimerDocument() {
            if (document.getIdentifiant() != null && !docGenererParCopie && modificationdoc) {
                ServiceBean service = (ServiceBean) ServiceFinder.getBean("#{ServiceBean}", ServiceBean.class);
                Session sess = service.getTheSession();
                try {
                    IdDocument id = document.getIdentifiant();
                     sess.beginTransaction();
                    Document doc = (Document) sess.load(Document.class, id);
                    sess.delete(doc);
                    sess.getTransaction().commit();
                    sess.flush();
                     message = "Le document : " + id.toString() + " est supprimé";
                    showPanelGroupe = true;
                    reinitialiserDocument();
     
                } catch (Exception e) {
                    e.printStackTrace();
                    FacesContext context = FacesContext.getCurrentInstance();
                    FacesMessage msg = new FacesMessage();
                    msg.setSeverity(FacesMessage.SEVERITY_ERROR);
                    msg.setSummary("Le document n'est pas supprimer : " + e.getMessage());
                    context.addMessage(null, msg);
                    showPanelGroupe = true;
                   }
            } else if (!modificationdoc) {
                reinitialiserDocument();
                message =  "Veuillez charger un document pour le supprimé";
            }
        }
    j'ai essai pas mal de fois avec ce code mais ca marche pas .
    j'ai vraiment besaoin de vos aide et merci pour tout le monde .

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Salut !!

    Peut-etre que ton flush() essaie de sauvegarder les entités PaiementDocument encore référencés dans ton objet Document.
    Pourquoi est ce que tu flush ? Le commit de la transaction te donne pas le résultat escompté ?

Discussions similaires

  1. Probleme de mapping hibernate sur netbeans
    Par afroman dans le forum Hibernate
    Réponses: 6
    Dernier message: 25/05/2009, 21h48
  2. probleme avec map + hibernate
    Par maxf1 dans le forum Hibernate
    Réponses: 1
    Dernier message: 27/03/2007, 10h44
  3. Réponses: 2
    Dernier message: 17/07/2006, 14h45
  4. [Hibernate] Problème de mapping ?
    Par n@n¤u dans le forum Hibernate
    Réponses: 3
    Dernier message: 13/06/2006, 08h45
  5. [hibernate] probleme de mapping un-vers-plusieurs
    Par Elmilouse dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/04/2006, 13h37

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