-->
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.  [ 4 posts ] 
Author Message
 Post subject: org.hibernate.TransientObjectException
PostPosted: Mon May 30, 2005 1:30 pm 
Newbie

Joined: Fri Apr 15, 2005 4:57 am
Posts: 13
Location: Lyon, France
Bonjour,

voila mon erreur :

Code:
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: fr.ggl.dao.produit.MetalDm
   at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216)
   at org.hibernate.type.EntityType.getIdentifier(EntityType.java:99)
   at org.hibernate.type.EntityType.isDirty(EntityType.java:216)
   at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:412)
   at org.hibernate.persister.entity.BasicEntityPersister.findDirty(BasicEntityPersister.java:2528)
   at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:343)
   at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:108)
   at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:190)
   at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:70)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:726)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:320)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)


j'ai 2 fichier de mappping, une relation may-to-one :

Code:
<hibernate-mapping>
  <class lazy="true"  name="fr.produit.MetalDm" table="metal" schema="produit" >
    <id name="codeMetal" column="mtl_code_metal" >
     <generator class="assigned"/>
    </id>

    <property name="libelleCourt" column="mtl_libelle_court"               length="255" not-null="true"/>
    <property name="libelleLong" column="mtl_libelle_long"                length="255"/>
    <property name="coursMetal" column="mtl_cours_metal"                 length="4"/>
  </class>
</hibernate-mapping>


Code:
<hibernate-mapping>
  <class lazy="true"  name="fr.QualiteDm" table="qualite" schema="produit" >
    <id name="codeQualite" column="qul_code_qualite" >
     <generator class="assigned"/>
    </id>

    <many-to-one name="metal" column="qul_code_metal" />
   
    <property name="libelleCourt" column="qul_libelle_court" length="255" not-null="true"/>
    <property name="libelleLong" column="qul_libelle_long" length="255"/>
    <property name="droitSpecifiqueGarantie"   column="qul_droit_specifique_garantie" length="4"/>
  </class>
</hibernate-mapping>


je veux mettre null dans le champs metal de la class QualiteDm, mais hibernate plante lors du commit. Comment dois-je m'y prendre ? Un option à rajouter man mon association ?

merci,

Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp

Hibernate version: 3.0.5

Name and version of the database you are using: postgreSQL 8


Top
 Profile  
 
 Post subject:
PostPosted: Mon May 30, 2005 7:23 pm 
Senior
Senior

Joined: Tue Feb 08, 2005 5:26 pm
Posts: 157
Location: Montréal, Québec - Canada
Avez-vous essayé de mettre l'attribut: not-null="false"?

_________________
Vincent Giguère
J2EE Developer


Top
 Profile  
 
 Post subject:
PostPosted: Tue May 31, 2005 4:53 am 
Newbie

Joined: Fri Apr 15, 2005 4:57 am
Posts: 13
Location: Lyon, France
il nexiste pas d'attribut not-null pour l'élément many-to-one.

N'y aurait-il pas une autre facon de faire mon mapping ?


Top
 Profile  
 
 Post subject:
PostPosted: Tue May 31, 2005 11:15 am 
Senior
Senior

Joined: Tue Feb 08, 2005 5:26 pm
Posts: 157
Location: Montréal, Québec - Canada
Bonjour.

Ma réponse était erroné. (à moins qu'il n'ait été enlevé depuis la version 3.0.3, l'attribute not-null existe toutefois).

L'utilisation de cet attribut n'aurait toutefois rien changé.

Hibernate déconseille l'usage de clés externes nulles, bien qu'il soit possible de le faire fonctionner ainsi:
Quote:
Nullable foreign keys are not considered good practice in traditional data modelling, so all our examples use not null foreign keys. This is not a requirement of Hibernate, and the mappings will all work if you drop the nullability constraints.


Je crois que la meilleure façon de régler le problème serait de mettre votre association entre Qualite et Metal à INVERSE=TRUE, de créer une relation inverse sur MetalDM (vers Qualité) et de créer une méthode (QualiteDM.removeMetalDm) qui enlèverait l'objet QualiteDM courant (this) de la collection de QualiteDM retrouvé sur l'object MetalDM.

Ça me semble peu élégant, mais c'est la meilleure réponse que j'ai trouvé sur les forum. La réponse vient d'un member de l'équipe Hibernate (Emmanuel).

http://forum.hibernate.org/viewtopic.php?t=926445

Bonne change.

_________________
Vincent Giguère
J2EE Developer


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 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.