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 :

Mapping et récupération de données dans table externe


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Par défaut Mapping et récupération de données dans table externe
    Bonjour à tous !!

    J'ai un petit problème avec les mappings hbm.

    J'ai une table A et une table B :

    A
    aid
    bid
    cid
    langabrev
    aname

    B
    bid
    bname

    La table A contient un identifiant pour associer une ligne de la table B (bid).
    J'aimerai maintenant récupérer la valeur bname de la table B dans mon mapping de la table A.

    J'ai tenté de le faire avec une balise "join" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    		"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    		"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.test">
     
    	<class name="AVO" table="A">
    		<id name="id" column="aid" unsaved-value="0">
    			<generator class="native"/>
    		</id>
    		<property name="bid" column="bid" />
    		<property name="langabrev" column="langabrev" />
    		<property name="name" column="medianame" />
     
    		<join table="b">
    			<key column="bid" property-ref="bid" />
    			<property name="bname" type="string">
    			</property>
    		</join>
     
    	</class>
    </hibernate-mapping>
    mais rien n'y fait... j'ai pu voir dans la doc que "property-ref" permettait de faire référence à une clé autre que la clé primaire de ma classe AVO, mais dans la requête, il continue à me faire un left join b on a.aid = b.bid, alors que la requête devrai être left join b on a.bid = b.bid


    Dans le même ordre d'idée, j'ai une table C qui est définie comme suivant :

    C
    cid
    langabrev
    cname

    Et j'aimerai pouvoir récupérer, toujours dans mon mapping AVO, la valeur cname en faisant référence au cid (même problème que ci-dessus) et en faisant également référence au langabrev de la table A. J'ai tenté avec une "formula" mais là encore, pas plus de succès... peut-être utiliser une clé composée en faisant référence aux 2 champs de la table A, mais comme je n'arrive déjà pas à faire référence à 1 seul champ (problème du départ) j'arrive encore moins à le faire sur 2 champs...

    Si quelqu'un pouvait bien m'éclairer sur les références vers des tables externes, la manière de les mettre en oeuvre, ça me serait d'une grande aide.


    D'avance merci pour vos suggestions.


    Cordialement

  2. #2
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Je te conseil la lecture de l'introduction à Hibernate : http://www.hibernate.org/hib_docs/v3...l-associations

    Si tu ne veux pas te prendre la tête, tu peux utiliser Hibernate Tools qui génére automatique les fichiers de mapping.

  3. #3
    Membre chevronné Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Par défaut
    Hello,

    Je lis déjà de long en large la documentation officielle concernant hibernate, et j'ai eu pas mal de peine à trouver comment faire ce que je voulais... En gros, j'aurai aimé récupérer les données directement dans le mapping de la classe A sans avoir besoin de créer une classe B (du genre inner join class B on A.bid=B.bid) mais ça ne me semble pas possible.

    Au final, la réponse se trouve dans la déclaration d'une classe B avec mapping, et une relation

    <many-to-one name="b" column="bid" class="BVO" />

    permettant de récupérer, pour chaque instance de classe A, la ligne de B associée.

    Maintenant j'ai installé hibernateTools hier, pour faire des tests, et mon réel problème est que je n'utilise pas Java pour travailler l'application, j'utilise LiveCycle DataService associé à Flex. Flex attaque directement hibernate sur les mappings (il peut aussi le faire via des assembleurs java mais ça peut vite devenir compliqué au niveau insertion/mise à jour/suppression) donc j'essaye de faire des mappings qui vont bien pour la récupération de données, sans avoir à chaque fois à développer des assembleurs java.

    Voilà. ça ne répond pas encore à mon second problème, qui serait de récupérer les données en ajoutant la référence à la valeur langabrev, mais c'est déjà une avancée pour moi. Merci quand même.

Discussions similaires

  1. [AC-2002] Récupération de données dans plusieurs tables
    Par azertix dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/01/2010, 13h35
  2. [MySQL] Récupération des données dans une table
    Par doudom dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/07/2007, 19h59
  3. [MySQL] récupération de données dans 2 tables + fonction mail()
    Par matperino dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/03/2007, 00h54
  4. Réponses: 12
    Dernier message: 20/04/2006, 14h23
  5. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07

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