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

QxOrm Discussion :

Relation OneToMany et listes


Sujet :

QxOrm

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 61
    Points : 96
    Points
    96
    Par défaut Relation OneToMany et listes
    Bonjour,

    je vais prendre l'exemple qxBlog qui résume à merveille mon cas; dans la classe author, il y'a un attribut m_blogX si je ne me trompe pas, et ainsi dans blog un attribut m_author, après avoir testé, il semblerait que m_blogX soit tout le temps vide, même après avoir attribué un author à un objet blog, cela est il normal ? Faut-il le faire manuellement ?

    Merci d'avance.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 481
    Points : 4 238
    Points
    4 238
    Par défaut


    Quand tu charges un objet provenant de la BDD, il y a 2 concepts :

    * lazy fetch : tu valorises uniquement les propriétés d une classe (donc tu interroges 1 seule table de la BDD). C est ce qui va se passer si tu utilises les fonctions : qx::dao::fetch_all, fetch_by_ id, fetch_by_query.

    * eager fetch : tu valorises les propriétés de ta classe + 1 ou plusieurs relations (donc tu interroges plusieurs tables de la BDD). Pour faire 1 eager fetch, il faut utiliser les fonctions : qx::dao::fetch_by_id_with_relation, fetch_all_with_relation, etc...

    Donc pour revenir a ton exemple, il faut utiliser eager fetch si tu veux récupérer 1 author et tous les blogs qu il a ecrit en 1 seule requete.

    Est ce que c est plus clair maintenant ?
    Si tu me donnes 1 bout de code, peut etre que je pourrai 1 peu plus t aider...
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 61
    Points : 96
    Points
    96
    Par défaut
    Salut, merci beaucoup de ta réponse, c'est effectivement beaucoup plus clair, je teste ça ce week-end et je te reposte si j'ai encore des problèmes avec cette notion.

    Sinon je voulais te remercier encore une fois, j'ai retrouvé le plaisir de programmer grâce à toi !

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 481
    Points : 4 238
    Points
    4 238
    Par défaut
    Sinon je voulais te remercier encore une fois, j'ai retrouvé le plaisir de programmer grâce à toi !
    Je ne sais pas comment j'ai pu faire ça, mais bon... Merci beaucoup !!!
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 61
    Points : 96
    Points
    96
    Par défaut
    On va dire que dans mon projet j'avais quasiment recrée un ORM en miniature et pas pratique du tout avec héritage d'un objet unique abstrait et redéfinition des méthodes update(), save(), create(), delete() pour chaque objet, autant dire que cela était un vrai casse-tête pour maintenir à jour les différents objets Et que du coup, la simplicité que m'apporte QxOrm m'a permis de plus me focaliser sur l'application que sur l'organisation et le stockage de données tout en me permettant d'implémenter des fonctionnalités que je souhaitais mais qui me semblait difficile(QxSession notamment) !

    EDIT: ah oui, j'allais oublier le fait que de charger mes objets avec fetch_with_all_relation() m'a donné le résultat attendu !

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

Discussions similaires

  1. [Mapping] Relation @oneToMany récupération d'une liste ordonnée
    Par cecile38 dans le forum Hibernate
    Réponses: 2
    Dernier message: 20/11/2011, 11h22
  2. Modification d'une relation @OneToMany coté liste
    Par cuddles80 dans le forum Hibernate
    Réponses: 0
    Dernier message: 19/04/2010, 23h48
  3. Relation plusieurs à plusieurs + listes déroulantes en cascade
    Par Myster Jo dans le forum Modélisation
    Réponses: 1
    Dernier message: 04/08/2008, 17h19
  4. expression régulière en relation avec une liste
    Par Jasmine80 dans le forum Langage
    Réponses: 3
    Dernier message: 30/07/2008, 15h02
  5. Réponses: 7
    Dernier message: 21/01/2007, 12h12

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