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

JPA Java Discussion :

@OneToMany Pere / Fils -> Update


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut @OneToMany Pere / Fils -> Update
    salut tout le monde,
    j'essaye désespérément de faire une opération de mise a jour mais rien a faire
    J'ai 2 entités: Travail 1--------1..* Action

    Travail :

    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
     
    @Entity
    @Table(name = "Travail")
    @NamedQueries( {
    		@NamedQuery(name = "countDemande", query = "Select count(*) from Demande"),
    		@NamedQuery(name = "findAllDemande", query = "Select d from  Demande d order by d.libelle asc") })
    public class Demande implements java.io.Serializable{
    	...............
    private Set<Action> actions = new HashSet<Action>();
    ...............
     
    @OneToMany(cascade = {CascadeType.ALL},fetch=FetchType.EAGER)
    		public Set<Action> getActions() {
    			return actions;
    		}
    ma methode d'ajout d'une 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
    public String plannification(){
    		try{
    			iddemande = new Integer(getParameter(FacesContext.getCurrentInstance(), "iddemande"));
    			if(iddemande==null){
    				JSFUtils.addError("errors.unknown.id", "demande");
    				return "error";
    			}
    			setUserInfos();			
     
    			demande = publicFacade.demandeFindByPrimaryKey(iddemande);
    			Action action = new Action();
    			action.setCommentaire(motifplannif);
    			action.setDateplannification(dateplannification);
    			action.setIntervenant(user.getRessource());
    			action.setDatecreationaction(new Date());
    			action.setTypeaction(TypeAction.PLANNIFIER);			
     
    			demande.getActions().add(action);
    			demande.setIntervenant(user.getRessource());
    			demande.setEtat(Demande.Etat.PLANIFIEE);
    			demande.setDateplannification(dateplannification);			
    			publicFacade.updateDemande(demande);
     
    			//Affichage d'un message de réussite
    			JSFUtils.addMessage("success.saved", "la demande");
    			clear();			
    			return "success";
    		}catch (Exception e) {
    			// TODO: handle exception
    			e.getCause().printStackTrace();
    		}
    		return "error";		
    	}

    SessionBean:
    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
    public void updateDemande(Demande updateDemande) {
    		try{
    //			 Lecture de la demande
    			Demande demande = (Demande) em.find(Demande.class, updateDemande
    					.getIddemande());
     
    			// Positionnement des infos complémentaires
    			demande.setDateder_maj(new Date());
    			demande.setLibelle(updateDemande.getLibelle());
    			demande.setDescription(updateDemande.getDescription());
    			demande.setCommentaire(updateDemande.getCommentaire());
    			demande.setUnitetravail(updateDemande.getUnitetravail());
    			demande.setIntervenant(updateDemande.getIntervenant());
    			demande.setEtat(updateDemande.getEtat());
    			demande.setDatefinprevue(updateDemande.getDatefinprevue());
     
    			demande.setDateplannification(updateDemande.getDateplannification());
     
    			demande.setDaterejet(updateDemande.getDaterejet());
     
    			if(updateDemande.getEtat().equals(Demande.Etat.TERMINEE))
    				demande.setDatefinreel(new Date());	
    			else if(updateDemande.getEtat().equals(Demande.Etat.REJETEE)){
    				demande.setDaterejet(new Date());
    				demande.setActions(updateDemande.getActions());
    			}
    			else if(updateDemande.getEtat().equals(Demande.Etat.PLANIFIEE)){
    				demande.setActions(updateDemande.getActions());			
    			}
     
     
    			//Mise à jour du demandeur		
    			demande.setDemandeur(updateDemande.getDemandeur());
     
     
    		}catch (Exception ex) {
    			// TODO: handle exception
    			ex.getCause().printStackTrace();			
    			return;
    		}
     
     
    	}


    lorsque je modifie un travail pour lui ajouter une action, si c'est la premiere action associé au travail ca se passe sans probleme, mais si ce travail a deja une action a ce moment la j'ai droit au message d'erreur suivant :

    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
    ERROR [STDERR] org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=PC-de-Dada/63, BranchQual=, localId=63] status=STATUS_NO_TRANSACTION; - nested throwable: (javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: 
    23:29:36,466 ERROR [STDERR] 	at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:372)
    23:29:36,466 ERROR [STDERR] 	at org.jboss.tm.TxManager.commit(TxManager.java:240)
    23:29:36,466 ERROR [STDERR] 	at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
    23:29:36,466 ERROR [STDERR] 	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
    23:29:36,466 ERROR [STDERR] 	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:197)
    23:29:36,466 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:225)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:55)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    23:29:36,467 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)
    23:29:36,467 ERROR [STDERR] 	at $Proxy86.updateDemande(Unknown Source)
    23:29:36,467 ERROR [STDERR] 	at 
    23:29:36,467 ERROR [STDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    23:29:36,467 ERROR [STDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    23:29:36,467 ERROR [STDERR] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    23:29:36,467 ERROR [STDERR] 	at java.lang.reflect.Method.invoke(Unknown Source)
    23:29:36,467 ERROR [STDERR] 	at com.sun.el.parser.AstValue.invoke(AstValue.java:151)
    23:29:36,468 ERROR [STDERR] 	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
    23:29:36,468 ERROR [STDERR] 	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
    23:29:36,468 ERROR [STDERR] 	at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:69)
    23:29:36,468 ERROR [STDERR] 	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
    23:29:36,468 ERROR [STDERR] 	at javax.faces.component.UICommand.broadcast(UICommand.java:312)
    23:29:36,468 ERROR [STDERR] 	at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
    23:29:36,468 ERROR [STDERR] 	at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
    23:29:36,468 ERROR [STDERR] 	at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:329)
    23:29:36,468 ERROR [STDERR] 	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
    23:29:36,468 ERROR [STDERR] 	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    23:29:36,468 ERROR [STDERR] 	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    23:29:36,468 ERROR [STDERR] 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    23:29:36,468 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    23:29:36,468 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    23:29:36,468 ERROR [STDERR] 	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
    23:29:36,468 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    23:29:36,468 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    23:29:36,468 ERROR [STDERR] 	at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
    23:29:36,468 ERROR [STDERR] 	at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
    23:29:36,468 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    23:29:36,468 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    23:29:36,468 ERROR [STDERR] 	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    23:29:36,468 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    23:29:36,468 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    23:29:36,468 ERROR [STDERR] 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    23:29:36,469 ERROR [STDERR] 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    23:29:36,469 ERROR [STDERR] 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
    23:29:36,469 ERROR [STDERR] 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
    23:29:36,469 ERROR [STDERR] 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
    23:29:36,469 ERROR [STDERR] 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    23:29:36,469 ERROR [STDERR] 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    23:29:36,469 ERROR [STDERR] 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    23:29:36,469 ERROR [STDERR] 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    23:29:36,469 ERROR [STDERR] 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    23:29:36,469 ERROR [STDERR] 	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    23:29:36,469 ERROR [STDERR] 	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    23:29:36,469 ERROR [STDERR] 	at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
    23:29:36,469 ERROR [STDERR] 	at java.lang.Thread.run(Unknown Source)
    23:29:36,469 ERROR [STDERR] Caused by: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: 
    23:29:36,469 ERROR [STDERR] 	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:567)
    23:29:36,469 ERROR [STDERR] 	at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:484)
    23:29:36,469 ERROR [STDERR] 	at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1491)
    23:29:36,469 ERROR [STDERR] 	at org.jboss.tm.TransactionImpl.beforePrepare(TransactionImpl.java:1110)
    23:29:36,469 ERROR [STDERR] 	at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:324)
    23:29:36,470 ERROR [STDERR] 	... 64 more
    23:29:36,470 ERROR [STDERR] Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: 
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.impl.SessionImpl.firePersistOnFlush(SessionImpl.java:646)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.impl.SessionImpl.persistOnFlush(SessionImpl.java:638)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.engine.CascadingAction$9.cascade(CascadingAction.java:225)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:213)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:157)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:108)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:290)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:185)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:160)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:108)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.engine.Cascade.cascade(Cascade.java:248)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:130)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:121)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
    23:29:36,470 ERROR [STDERR] 	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:993)
    23:29:36,471 ERROR [STDERR] 	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:340)
    23:29:36,471 ERROR [STDERR] 	at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:475)
    23:29:36,471 ERROR [STDERR] 	... 67 more
    quelqu'un aurait une piste ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Par défaut
    De la meme manière que tu recharge ta demande, tu dois faire de meme avec ton objet Action.


    Cependant, je me pencherai plus sur le :
    em.merge qui permet de rattacher l'objet à la session et hibernate detecte tout seul qu'un update doit être réalisé.
    L'update se fait seul lorsque la transaction se termine lors du commit

Discussions similaires

  1. OneToMany ManyToOne - Pere/fils - Suppression du Set
    Par RhumRom dans le forum Hibernate
    Réponses: 4
    Dernier message: 03/08/2010, 20h04
  2. Communication pere/fils dans un serveur
    Par romainromain dans le forum Réseau
    Réponses: 4
    Dernier message: 22/11/2006, 19h47
  3. synchronisation processus pere fils
    Par Tex-Twil dans le forum POSIX
    Réponses: 6
    Dernier message: 25/10/2006, 11h34
  4. pere/fils
    Par innosang dans le forum C
    Réponses: 10
    Dernier message: 15/03/2006, 20h58
  5. modeliser relation pere fil
    Par flawer dans le forum Débuter
    Réponses: 20
    Dernier message: 12/12/2005, 11h59

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