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 :

[jointure] relation avec table réflexive


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2004
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2004
    Messages : 156
    Points : 90
    Points
    90
    Par défaut [jointure] relation avec table réflexive
    Bonjour j'ai un petit souci et j'aurais besoin de votre aide
    J'ai une table THESAURUS qui comme son nom l'indique va me permettre de mettre en place un thésaurus
    voici la structure de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create table THESAURUS  (
       CODE VARCHAR2(10) not null,
       TYPE VARCHAR2(10),
       LIBELLE VARCHAR2(500),
       PARENT VARCHAR2(10) null,
       constraint PK_THESAURUS primary key (CODE),
       constraint FK_THESAURUS_REFLEXIVE foreign key (PARENT) references  THESAURUS (CODE)
    );
    J'ai donc une classe qui correspond à ces attributs avec ce fichier de mapping
    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
    <class name="Thesaurus" table="THESAURUS">
      <id name="code" type="java.lang.String">
        <column name="CODETHESAURUS" sql-type="VARCHAR2(10)"/>
      </id>
      <property name="type" type="java.lang.String"> 
        <column name="TYPE" sql-type="VARCHAR2(10)"/>
      </property>
      <property name="libelle" type="java.lang.String"> 
        <column name="LIBELLE" sql-type="VARCHAR2(500)"/>
      </property>
      <set name="thesaurusEnfants" inverse="true">
        <key column="CODETHESAURUSPARENT"/>
        <one-to-many class="Thesaurus"/>
      </set>
    </class>
    Mais maintenant j'ai besoin d'un requête permettant de retourner ces résultats de manière organisé et je suis bloqué
    En, effet les données de cette table sont de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1,'type1','libelle1',null
    2,'type2','libelle2',1
    3,'type3','libelle3',1
    4,'type4','libelle4',2
    5,'type5','libelle5',2
    Cela devrait me donner un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    - libelle1
       - libelle2
          - libelle4
          - libelle4
       - libelle3
    Donc j'ai besoin d'une requête qui me récupère cette structure hiérarchisé en ayant en premier lieu que les élément n'ayant pas d'élément parent

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Et en faisant un ca ne marche pas??

    Sinon tu fais comme moi, je recupere une liste (ou plutot un set) dont je veux qu'elle soit triée de facon assez spécial. Donc j'ai implémenté un comparator qui compare mes objets et j'ai mis le comparator dans le sort de ma liste (dans le fichier de conf).
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  3. #3
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Ave Hibernate je sais pas trop, mais par contre si tu utilise Oracle en sql tu peux utiliser "connect by prior" qui en quelque sorte te permet de trier une structure arborescente

  4. #4
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2004
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2004
    Messages : 156
    Points : 90
    Points
    90
    Par défaut
    Oui j'y avais pensé le problème c'est que je ne vois pas comment traiter ensuite ces informations

  5. #5
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2004
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2004
    Messages : 156
    Points : 90
    Points
    90
    Par défaut
    Sinon je fais une requête traditionnelle du genre
    SELECT * from thésaurus WHERE codethesaurusparent is null
    Il me retourne bien ce qu'il faut mais le problème c'est qu'il contient des collections de thésaurus enfants (mais qui ne sont pas préchargé)



    Comment puis-je alors préchargé tous ces éléments ? (en sachant qu'il sont en arborescence et donc en plusieurs niveaux)

  6. #6
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2004
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2004
    Messages : 156
    Points : 90
    Points
    90
    Par défaut
    Désolé maxf1 j'avais pas vu ton poste

    j'ai pas tout compris !

    tu aurais un exemple éventuellement ?

  7. #7
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par matech
    Oui j'y avais pensé le problème c'est que je ne vois pas comment traiter ensuite ces informations
    et bien, si tu les a tries dans l'ordre que tu veux ou est le probleme pour ton traitement?

    La question est que veux tu en faire apres?

  8. #8
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2004
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2004
    Messages : 156
    Points : 90
    Points
    90
    Par défaut
    En fête mon problème c'est que cette table comprend plus de 16000 enregistrements et hibernate ne fait que de faire des requêtes pour chaque sous éléments, il faudrait donc que je recharge tout en mémoire

  9. #9
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Et si tu ecris ta requete en Sql natif ? Le probleme de rechargement ne se pose peut etre plus...

  10. #10
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Citation Envoyé par matech
    Désolé maxf1 j'avais pas vu ton poste

    j'ai pas tout compris !

    tu aurais un exemple éventuellement ?

    Ce que je voulais dire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <set name="thesaurusEnfants" inverse="true" sort="order by parent asc">
        <key column="CODETHESAURUSPARENT"/>
        <one-to-many class="Thesaurus"/>
      </set>
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

Discussions similaires

  1. [AC-2010] Relations avec table carnet d'adresses
    Par theolivier dans le forum Modélisation
    Réponses: 3
    Dernier message: 22/11/2012, 17h30
  2. Réponses: 0
    Dernier message: 07/04/2010, 18h53
  3. [MySQL] Requête d'insertion et relation avec table
    Par demon66 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/11/2009, 22h17
  4. [Relations] Ajouter une relation avec table liée
    Par Jean-Philippe André dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/10/2007, 14h09
  5. Réponses: 2
    Dernier message: 07/08/2007, 09h51

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