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 :

Relations one-to-many


Sujet :

QxOrm

  1. #1
    Membre régulier

    Inscrit en
    Octobre 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 69
    Points : 110
    Points
    110
    Par défaut Relations one-to-many
    Bonjour,
    Dans votre exemple qxBlog, il y a cette ligne pour une relation OneToMany
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t.relationOneToMany(& blog::m_commentX, "list_comment", "blog_id");
    çà paraît certainement stupide, mais je voudrais savoir à quoi correspond la chaîne "list_comment".
    J'ai essayé de regarder la documentation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template<class T >
    template<typename V , typename U >
    IxSqlRelation* qx::QxClass< T >::relationOneToMany (V U::*  pData,
    		const QString &  sKey,
    		const QString &  sForeignKey 
    )
    Dans toutes les autres méthodes, en particulier les relationManyToOne(), sKey correspond à un champ de la table, mais ici je ne vois pas bien à quoi "list_comment" correspond.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t.relationOneToMany(& blog::m_commentX, "list_comment", "blog_id");
    m_commentX est une propriété de la classe blog. Pour chaque propriété d'une classe est associée une instance de type qx::IxDataMember. Chaque qx::IxDataMember doit posséder une clé (c'est utile pour le moteur d'introspection par exemple) : donc "list_comment" est la clé associée à la propriété m_commentX de la classe blog.
    Dans ce cas, il s'agit d'une relation, mais une relation est forcément liée à une propriété d'une classe, c'est pourquoi cette clé est nécessaire.

    Dans le tutoriel, tu verras les traces générées après exécution du programme qxBlog. A un moment, on fait qx::dump(blog_tmp); pour afficher blog_tmp dans un format XML : "list_comment" est utilisé pour la balise XML pour lister tous les commentaires du blog :
    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
    [QxOrm] start dump 'boost::shared_ptr<blog>'
    <boost.shared_ptr-blog- class_id="0" tracking_level="0" version="1">
    	<px class_id="1" tracking_level="1" version="0" object_id="_0">
    		<blog_id>113</blog_id>
    		<blog_text class_id="2" tracking_level="0" version="0">update blog_text_1</blog_text>
    		<date_creation class_id="3" tracking_level="0" version="0">20100409162612000</date_creation>
    		<list_comment class_id="8" tracking_level="0" version="0">
    			<count>2</count>
    			<item class_id="9" tracking_level="0" version="1">
    				<px class_id="10" tracking_level="1" version="0" object_id="_2">
    					<comment_id>209</comment_id>
    					<comment_text>comment_1 text</comment_text>
    					<date_creation>20100409162612000</date_creation>
    					<blog_id>
    						<px class_id_reference="1" object_id="_3">
    							<blog_id>113</blog_id>
    							<blog_text></blog_text>
    							<date_creation></date_creation>
    							<author_id>
    								<px class_id="-1"></px>
    							</author_id>
    							<list_comment>
    								<count>0</count>
    							</list_comment>
    							<list_category class_id="11" tracking_level="0" version="0">
    								<count>0</count>
    							</list_category>
    						</px>
    					</blog_id>
    				</px>
    			</item>
    			etc.
    Je pense que j'ajouterai une QR dans la FAQ de QxOrm pour expliquer comment fonctionne et comment utiliser le moteur d'introspection. En gros, voici la hiérarchie des classes :
    * qx::QxClassX => représente toutes les classes enregistrées dans le contexte QxOrm (celles où tu as écris qx::register_class<T> ) ;
    * qx::QxClass => représente une classe enregistrée dans le contexte QxOrm ;
    * qx::QxDataMemberX => représente une collection de propriétés pour chaque classe enregistrée dans le contexte QxOrm ;
    * qx::QxDataMember => représente une propriété d'une classe enregistrée dans le contexte QxOrm.
    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.

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

Discussions similaires

  1. Relation one-to-many qui ne se crée pas
    Par Julien G dans le forum Hibernate
    Réponses: 4
    Dernier message: 01/08/2007, 18h02
  2. Réponses: 4
    Dernier message: 18/06/2007, 08h30
  3. [Hibernate] Relation one to many
    Par BRAUKRIS dans le forum Hibernate
    Réponses: 2
    Dernier message: 23/08/2006, 11h51
  4. [hibernate] relation one-to-many avec plusieurs clés
    Par seb_fou dans le forum Hibernate
    Réponses: 6
    Dernier message: 16/03/2006, 14h47
  5. [EJB2.1 Entity] [CMR] Relation One to Many
    Par hamed dans le forum Java EE
    Réponses: 2
    Dernier message: 31/12/2003, 14h26

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