-->
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.  [ 9 posts ] 
Author Message
 Post subject: Suppression d'un ensemble - Valeur par défaut
PostPosted: Thu Aug 30, 2007 10:07 am 
Newbie

Joined: Thu Jul 12, 2007 8:27 am
Posts: 5
Bonjour,

J'ai une classe Message qui possède un ensemble d'objets ErreurRetour.
Le problème se pose lorsque je fais un clear sur l'ensemble. Au commit, il supprime les enregistrements Erreur... enfin il essaie.

Car avant de faire un delete, il fait un update en mettant la clé étrangère (qui est clé primaire aussi) à NULL, et là ça coince car j'utilise DB2 et il n'accepte pas la valeur NULL...

Voici le mapping de l'ensemble:
<set name="erreursRetour" cascade="all" >
<key>
<column name="DENUD2" />
</key>
<one-to-many class="ErreurRetour" />
</set>

et voici le mapping de ErreurRetour:
<class name="ErreurRetour" table="DERREU">

<id column="DENUDM" name="id" type="long">
<generator class="increment" />
</id>

<property column="DEERRE" name="code" type="string" />
<property column="DELIBE" name="libelle" type="string" />
</class>

Existe t'il une solution afin qu'à la place de null, il mette une valeur, où qu'il fasse le delete sans passer par le update avant?

Merci.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 03, 2007 8:45 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Si c'est possible essaie de mettre ton association bidirectionnelle ça devrait mieux fonctionner

http://www.hibernate.org/hib_docs/v3/re ... irectional

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 04, 2007 10:30 am 
Newbie

Joined: Tue Sep 04, 2007 10:22 am
Posts: 5
J'ai exactement le même souci, avec un bag one-to-many, unidirectionnel.

Petite différences, mes clés sont des composites, mais le souci reste le même. Lorsque je supprime l'objet porteur de la liste, il hurle que j'essaye d'inserer une valeur null sur une colonne qui ne le supporte pas.

Voici le mapping portant la collection :
Quote:

<class name="Fichier" table="arfi">

<composite-id name="fichierId" class="FichierId">
<key-property name="requestNumber" Column="req_number"/>
<key-property name="fichierNumber" column="fic_number"/>
</composite-id>

<bag name="telechargements" cascade="all-delete-orphan" table="arte" >
<key foreign-key="true" >
<column name="req_number" />
<column name="fic_number" />
</key>
<one-to-many class="Telechargement"/>
</bag>
</class>



Et celui de éléments de la collection
Quote:
<class name="Telechargement"
table="arte">
<composite-id name="telechargementId"
class="TelechargementId">
<key-property name="requestNumber" column="req_number" />
<key-property name="fichierNumber" column="fic_number" />
<key-property name="userId" column="user_id" />
</composite-id>
</class>


comme vous pouvez le voir, j'ai mis foreign-key à true, pensant que ca changerait quelque chose... en vain.

Lorsque je spécifie not-null = true pour les éléments de la clé ( dans la balise bag donc ... ) , je me prends une erreur de type :

Quote:
java.lang.Throwable: org.hibernate.MappingException: Repeated column in mapping for entity: com.calyon.ssr.metier.report.Telechargement column: req_number (should be mapped with insert="false" update="false")


Si vous avez une solution, vous ferez 2 heureux.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Sep 05, 2007 5:15 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Voici une explication de gavin :
http://forum.hibernate.org/viewtopic.ph ... date+gavin

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Sep 05, 2007 6:15 am 
Newbie

Joined: Tue Sep 04, 2007 10:22 am
Posts: 5
Dans l'exemple du lien l'association est bi-directionnelle, ce n'est pas mon cas.

Pensez-vous que cela resolve mon problème ?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Sep 05, 2007 8:04 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Comme dit précédemment, historiquement hibernate gère mieux les contraintes not-null sur des liens bi-directionnels.
Je sais que depuis la version 3 je crois, il y arrive aussi sur des liens uni-directionnels.

Dans la faq ils disent qu'il suffit de mettre un not-null (http://www.hibernate.org/116.html#A9)

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Sep 05, 2007 8:13 am 
Newbie

Joined: Tue Sep 04, 2007 10:22 am
Posts: 5
Voici la modification :

<bag name="telechargements" cascade="all-delete-orphan" table="arte" >
<key foreign-key="true" not-null="true">
<column name="req_number" />
<column name="fic_number" />
</key>
<one-to-many class="com.calyon.ssr.metier.report.Telechargement" />
</bag>

mais j'ai ce coup-ci une autre erreur :

org.hibernate.MappingException: Repeated column in mapping for entity: com.calyon.ssr.metier.report.Telechargement column: req_number (should be mapped with insert="false" update="false")


Top
 Profile  
 
 Post subject:
PostPosted: Wed Sep 05, 2007 9:21 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
et si tu ne mets pas foreign-key="true"

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Sep 05, 2007 9:25 am 
Newbie

Joined: Tue Sep 04, 2007 10:22 am
Posts: 5
même chose :(


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