-->
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.  [ 2 posts ] 
Author Message
 Post subject: Gestion des clés nulles
PostPosted: Sat Feb 26, 2011 6:46 am 
Newbie

Joined: Sat Feb 26, 2011 4:48 am
Posts: 2
Bonjour
Un problème qui pourrait ête simple
quel mapping pour une table de ce style ?

idA foreign-key de table A de type int peut être null
idB foreign-key de table B de type int peut être null
idC foreign-key de table C de type int


pas d'autres propriétés dans la table, 1 seul discrimant possible = (idA, idB, idC)

Code:
<hibernate-mapping>
    <class name="Approver" table="APPROVER">
   
   <composite-id>
      <key-many-to-one name="businessArea" class="BusinessArea" column="AP_BA_ID"  lazy="false"></key-many-to-one>
      <key-many-to-one name="docType" class="DocType" column="AP_DT_ID" lazy="false"></key-many-to-one>
      <key-many-to-one name="approver" class="AlternateApprover" column="AP_ALTERNATEAPPROVER_ID" lazy="false"></key-many-to-one>      
   </composite-id>
      
   </class>
</hibernate-mapping>


ma classe Approver.java (Getter et setter pour chaque propriété)

Code:
public class Approver implements Serializable {
   
   private BusinessArea businessArea;
   private DocType docType;
   private AlternateApprover approver;
   
}


je lis l'objet de cette facon en passant un objet app de type Approver en testant la nullité de la zone et en adaptant le code ci-dessous
Code:
if (app.getDocType() == null ) {
          Criteria criteria = getSession().createCriteria(Approver.class).add(
               Restrictions.eq("businessArea", app.getBusinessArea())).add(
               Restrictions.isNull("docType"));   
          Approver result = (Approver) criteria.uniqueResult();

       }




j'ai essayé avec des id (de type java.lang.Long) plutôt qu'avec des objets (dans la classe java, mapping...) mais rien n'y fait :A partir du moment ou j'accède à une ligne avec une clé à null, je ne récupère rien dans result. En traçant la requête, elle est correcte, et en la testant dans un editeur SQL,elle retourne bien la ligne voulue.

Une idée ? Merci d'avance pour tout aide


Top
 Profile  
 
 Post subject: Re: Gestion des clés nulles
PostPosted: Sun Feb 27, 2011 9:23 am 
Newbie

Joined: Sat Feb 26, 2011 4:48 am
Posts: 2
Pb résolu en ajoutant un id comme PK. Je ne pensais pas pouvoir le faire, mais comme c'est une nouvelle table j'ai eu l'accord.
Ce n'est pas vraiment la réponse à la question mais c'est la solution la + évidente et la + simple
le mapping devient
Code:
<hibernate-mapping>
       <class name="Approver" table="APPROVER">
       <id name="id" column="AP_ID" type="long">
         <generator class="native"/>
      </id>
   
      <many-to-one name="businessArea" class="BusinessArea" column="AP_BA_ID"  lazy="false"></many-to-one>
      <many-to-one name="docType" class="DocType" column="AP_DT_ID" lazy="false"></many-to-one>
      <many-to-one name="approver" class="AlternateApprover" column="AP_ALTERNATEAPPROVER_ID" lazy="false"></many-to-one>
   
   </class>
</hibernate-mapping>


et les getters et setters de l'id sont évidemment ajouté à Approver.java


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