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 :

Hibernate3 et relation 1:1 (AS400)


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Par défaut Hibernate3 et relation 1:1 (AS400)
    Bonjour,

    Je suis en train de réaliser une application graphique qui affiche des données venant d'une base AS400.

    J'ai une table sgrpos qui contient la majorité des infos et dont la clé est porece, ainsi q'une table sgrecm qui contient quelques infos complémentaires et dont la clé est emrece. porece=emrece

    Voici mes mappings :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping
        PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
        <class name="bdd.Pos" table="SGRPOS">
    	<!-- <cache usage="read-write"/> -->
     
            <id name="porece" type="big_decimal" unsaved-value="null" >
                <column name="PORECE" not-null="true" length="8" />
                <generator class="native"/>
            </id>
     
            <property name="poste" type="string">
                <column name="POSTE" length="5" />
            </property>
     
            <property name="poredi" type="string">
            	<column name="POREDI" length="35" />
            </property>
     
            <property name="pocdes" type="string">
            	<column name="POCDES" length="6" />
            </property>
     
            <property name="poncol" type="big_decimal">
            	<column name="PONCOL" length="5" />
            </property>
     
            <property name="popnet" type="string">
            	<column name="POPNET" length="6" />
            </property>
     
        </class>
     
        <class name="bdd.PosEcm" table="SGRECM">
    	<!-- <cache usage="read-write"/> -->
            <
            <id name="porece" type="big_decimal" unsaved-value="null" >
                <column name="EMRECE" not-null="true" length="8" />
            	<generator class="assigned"/>
            </id>
     
            <property name="ref2" type="string">
                <column name="EMMNUM" length="15" />
            </property>
     
     
     
        </class>
     
    </hibernate-mapping>
    Aussi j'aimerai pouvoir récupérer ref2 en meme que les autres infos dans mon objet Pos.
    J'ai regardé pas mal de code concernant les one-to-one, mais impossible de faire fonctionner...

    Quelqu'un pourrait m'aider?

    MERCI

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Si tu cherches à faire une relation 1:1, je te conseille un many-to-one avec unique = true d'un côté et un one-to-one de l'autre coté de la relation si tu veux une relation bidirectionnelle.
    Regarde la documentation Hibernate à ce sujet, il y a un exemple.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Par défaut
    Citation Envoyé par fr1man
    Si tu cherches à faire une relation 1:1, je te conseille un many-to-one avec unique = true d'un côté et un one-to-one de l'autre coté de la relation si tu veux une relation bidirectionnelle.
    Regarde la documentation Hibernate à ce sujet, il y a un exemple.
    Merci pour l'info je vais checker la doc.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Par défaut
    Bon je reviens à la charge car le problème est en fait légèrement plus complexe.

    Je dois récupérer des livraisons. Une livraison possède des infos dans une table principale, ainsi qu'une info (référence) dans une autre table(commande). Je voudrai donc récupérer cette référence en tant que component de ma classe Livraison.
    Le souci est que pour une livraison j'ai n commande, mais l'info que je récupère est la meme pour les n commandes, j'ai donc besoin de récupérer q'une seule ligne.

    J'ai essayé plein de choses, actuellement je récupère une seule ligne dans un set en passant par un many-to-one unique="true", mais j'aurai aimé faire ça dans un component. Je trouve peu d'exemple de components, meme dans la doc, et ceux que j'ai essayé ne fonctionnent pas, quelqu'un pour m'aider?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Par défaut
    Toujours pour mon problème quand je regarde la maniere d'utiliser les components dans la doc hibernate je trouve comme exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <class name="eg.Person" table="person">
        <id name="Key" column="pid" type="string">
            <generator class="uuid"/>
        </id>
        <property name="birthday" type="date"/>
        <component name="Name" class="eg.Name"> <!-- class attribute optional -->
            <property name="initial"/>
            <property name="first"/>
            <property name="last"/>
        </component>
    </class>
    Où spécifie-t-on dans quel table on va chercher les propriétés et sur quel champs on fait la "jointure"?

    Pas besoin de rajouter un one-to-one?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Si mes souvenirs sont exacts, le component te permet de regrouper une partie des données d'une table (une ou plusieurs colonnes) dans un objet.
    Voilà pourquoi on ne spécifie pas de table.

    Dans ton exemple, les données de la table person seront utilisées.

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

Discussions similaires

  1. [AS400] utilisation sur PC
    Par stanko dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 08/11/2010, 20h53
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. [Hibernate3] relation 1-1 avec 2 pk
    Par mauvais_karma dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/08/2005, 23h21
  4. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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