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

Java EE Discussion :

Erreur "detached entity passed to persist"


Sujet :

Java EE

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2010
    Messages : 97
    Points : 71
    Points
    71
    Par défaut Erreur "detached entity passed to persist"
    Bonjour,

    J'ai une erreur :
    org.hibernate.PersistentObjectException: detached entity passed to persist: fastflow.metier.Workflow
    Je souhaite créer un petit moteur WebFlow où chaque workflow est composé de plusieurs activités.

    Voici mon code :
    Classe Workflow
    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
    @Entity
    public class Workflow implements Serializable{
     
        private static final long serialVersionUID = 1L;
     
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private int id;
        private String name;
        private String description;
        private Boolean publier;
     
        @Temporal(TemporalType.DATE)
        private Date creationDate;
     
     
     
        @OneToMany(mappedBy="parrentWf")
        public List<Activity> activities;
     
        @OneToMany(mappedBy="parrentWf")
        public List<WorkflowSession> sessions;
     
        @ManyToOne
        public User owner;
     
     
        @ManyToMany(mappedBy="registeredWorkflows")
        public List<User> participants;
     
        public Workflow() {
            super();
        }
     
     
        public Workflow(String name, String description, User owner) {
            super();
            this.name = name;
            this.description = description;
            this.owner = owner;
            this.creationDate = new Date();
        }
     
        public Workflow(String name, String description) {
            super();
            this.name = name;
            this.description = description;
            this.creationDate = new Date();
        }
     
        /*getters and setters */
    }
    Classe Activity
    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
    @Entity
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name = "ACTIVITY_TYPE", length = 3)
    public abstract class Activity implements Serializable{
     
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private int id;
        private String title;
        private String name;
     
        @OneToMany(mappedBy="parrentActivity")
        private List<Transition> transition;
     
        @ManyToOne(cascade=CascadeType.ALL)
        public Workflow parrentWf;
     
        public Activity() {
            super();
        }
     
        public Activity(String nom,String titre, Workflow parrentWf) {
            super();
            this.name = nom;
            this.parrentWf = parrentWf;
            this.title=titre;
        }
    /*getters and setters */
    }
    Mon EJB Statless
    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
    @Stateless 
    @TransactionManagement(value=TransactionManagementType.CONTAINER)
    @TransactionAttribute(value=TransactionAttributeType.REQUIRED)
    public class WorkflowManager implements IWorkflowManager {
     
        @PersistenceContext(name="fastflow_jpa")
        EntityManager em;
     
        @Override
        public void addWorkflow(Workflow wf) {
            em.persist(wf);
        }
     
        @Override
        public void addActivity(Activity act) {
            em.persist(act);
     
        }
     
             @Override
        public void addWorkflow(Workflow wf, User owner) {
            wf.setOwner(owner);
            addWorkflow(wf);
            //owner.getWorkflows().add(wf);
        }
     
        @Override
        public void addActivity(Activity act, Workflow wf) {
            act.setParrentWf(wf);
            addActivity(act);
            //wf.getActivities().add(act);
        }
    }
    Enfin ma servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    User u = um.getUserByEmail("email@gmail.com").get(0);
    Workflow wf = new Workflow("Work flow 1022", "description wf 1022");
    wm.addWorkflow(wf,u);
    Activity act = new Implementation("act 1","title act 1",wf);
    wm.addActivity(act); // Mon programme plante ici et génère l'exception citée en haut.
    Quand je remplace persist par merge ça marche mais je suis sûr que quelque chose ne va pas et que le problème apparaîtra dans un autre contexte que celui là.

    Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Points : 468
    Points
    468
    Par défaut
    Tu n'as pas posté ta classe "Implementation" (drôle de nom pour une classe).

    Tu as configuré l'ID de Activity comme , Hibernate s'attends donc que la valeur soit null. Tu es sûr qu'elle l'est bien ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/03/2012, 17h28
  2. Réponses: 9
    Dernier message: 09/05/2011, 21h25
  3. detached entity passed to persist
    Par snipes dans le forum JPA
    Réponses: 2
    Dernier message: 06/08/2009, 15h19
  4. Réponses: 1
    Dernier message: 14/07/2009, 00h24
  5. [EJB3 Entity] detached entity passed to persist
    Par maysam dans le forum Java EE
    Réponses: 3
    Dernier message: 03/12/2008, 13h43

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