IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Gestion des clés nulles


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut Gestion des clés nulles
    Bonjour
    Un problème qui pourrait ête simple mais étant débutant, je rame !
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    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

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [EJBQL] [EJB3] Gestion des clés etrangères
    Par niouma dans le forum Java EE
    Réponses: 1
    Dernier message: 20/06/2008, 09h47
  2. Gestion des valeurs nulles dans un graphique
    Par ben1f2l dans le forum Jasper
    Réponses: 2
    Dernier message: 21/01/2008, 20h30
  3. Gestion des Date Null
    Par vincnet68 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/10/2006, 23h49
  4. [VBA] Gestion des dates nulles provenant d'un recordset
    Par wperezrobles dans le forum Access
    Réponses: 11
    Dernier message: 28/09/2006, 18h02
  5. Gestion des clés étrangères
    Par Gonelle dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 06/07/2006, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo