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 :

    quelqu'un aurait une piste ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 42
    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, 21h04
  2. Communication pere/fils dans un serveur
    Par romainromain dans le forum Réseau
    Réponses: 4
    Dernier message: 22/11/2006, 20h47
  3. synchronisation processus pere fils
    Par Tex-Twil dans le forum POSIX
    Réponses: 6
    Dernier message: 25/10/2006, 12h34
  4. pere/fils
    Par innosang dans le forum C
    Réponses: 10
    Dernier message: 15/03/2006, 21h58
  5. modeliser relation pere fil
    Par flawer dans le forum Débuter
    Réponses: 20
    Dernier message: 12/12/2005, 12h59

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