org.hibernate.PersistentObjectException: detached entity passed to persist:
Bonsoir a tous,
J'ai une erreur de ce type depuis un long moment et je ne sais pas d'ou cela peut venir.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: ModeleMD.Patient
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:219)
at ControlleurMD.Schema.main(Schema.java:49)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: ModeleMD.Patient
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:213)
... 1 more |
Je tente d'inserer les valeurs dans la table avec comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Patient p1 = new Patient(1, "zimboumboum", "tralala", "2 rue des aubepines", 92600, "Asnieres sur seine", "0142425637", "z.tralala@hotmail.fr", "doc richard", 2, "à suivre semestriellement");
p1.add(m1);
em.persist(p1);
em.getTransaction().commit();
em.close();
emf.close(); |
Le fait est que ca me rajoute les tables dans la base de donnée sans l'enregistrement.
J'utilise Derby comme BDD.
j'ai changé de bdd en utilisant PostegreSQL= tjrs la meme erreur, a savoir:
Code:
1 2
|
detached entity passed to persist: ModeleMD.Mesure |
J'ai chercher partout sur internet j'ai pas trouvé de solutions.
Si quelqu'un peut m'aider ?
merci
A l'insertion de Patient, il ne faut pas forcer l'id...
en effet, le champ identifiant de Patient (ref) est annoté
Code:
@GeneratedValue(strategy=GenerationType.AUTO)
A l'insertion dans la base, il faut faire un
Code:
Patient p1 = new Patient(null, "zimboumboum", ...
et cela fonctionnera.