These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: probleme unsaved transient avec relation not-null="fals
PostPosted: Mon Jul 23, 2007 6:36 am 
Newbie

Joined: Tue Apr 24, 2007 6:11 am
Posts: 4
bonjour
je reçois ce message d'erreur quand j'essai de persister un objet personne.


Code:
org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: com.sif.intranet.model.Personne; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.sif.intranet.model.Personne
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:657)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:413)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:363)
org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:595)
com.sif.intranet.dao.impl.PersonneDAO.createPersonne(PersonneDAO.java:17)
com.sif.intranet.services.impl.PersonneServiceImpl.addPersonne(PersonneServiceImpl.java:20)
com.sif.intranet.actions.user.UserAction.register(UserAction.java:80)....


mon fichier de mapping est le suivant:

Code:
<hibernate-mapping>
<class name="com.sif.intranet.model.Personne" table="personne">
<id name="persId" type="java.lang.Integer">
<column name="PersId" />
<generator class="identity" />
</id>
<property name="nom" type="java.lang.String">
<column name="Nom" length="20" not-null="true" />
</property>
<property name="prenom" type="java.lang.String">
<column name="prenom" length="20" not-null="true" />
</property>

<many-to-one name="superieur" class="com.sif.intranet.model.Personne" cascade="none" not-null="false" >
</many-to-one>

<one-to-one name="user" class="com.sif.intranet.model.User" property-ref="personne" />

<set name="subalternes" inverse="true" cascade="none" >
<key column="superieur" not-null="false" />
<one-to-many class="com.sif.intranet.model.Personne" />
</set>   

</class>
</hibernate-mapping>



et le probleme se trouve entre un objet personne et un objet superieur quand ce dernier est égal à null, les deux objets sont de la même classe, malgré que j'utilise : not-null="false" hibernate recherche le superieur et çà pose probleme quand ce dernier est égal à null.

Merci pour votre aide !


Top
 Profile  
 
 Post subject: classe Personne
PostPosted: Wed Aug 01, 2007 3:22 am 
Beginner
Beginner

Joined: Wed Oct 25, 2006 9:05 am
Posts: 40
Location: France, Lieusaint
Avez-vous le code de la classe Personne ?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Aug 01, 2007 6:11 am 
Newbie

Joined: Tue Apr 24, 2007 6:11 am
Posts: 4
Bonjour Pierre-Henry et Merci pour ta reponse,
je viens de trouver la solution, en fait hibernate instancie un nouvel objet "superieur" à chaque creation d'un nouvel objet "personne" meme en indiquant not-null="false" dans le fichier de mapping, "not-null" concerne en fin de compte que l'identificateur de l'objet en question et non pas l'objet lui même, car bizarement, le ID du superieur == null alors que le superieur != null !!!!!! donc j'ai dus rajouter la ligne suivante avant la création d'un objet "personne" :

Code:
if (null !=pers.getSuperieur() && null==pers.getSuperieur().getPersId()) pers.setSuperieur(null); this.personDAO.createPersonne(pers); 




et le tour est joué !!!!


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.