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 :

QxOrm 1.2.2 (BETA 14) - bogue complexe avec l'héritage


Sujet :

QxOrm

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Points : 49
    Points
    49
    Par défaut QxOrm 1.2.2 (BETA 14) - bogue complexe avec l'héritage
    Re-bonjour,

    Fiouf ! Ca y est, j'ai réussi à le reproduire: voici un bogue un peu plus complexe, j'ai eu du mal à faire un micro exemple. J'espère que le schéma n'est pas trop chaotique...

    J'ai beaucoup de mal à savoir d'où il vient, donc j'ai essayé de reproduire un peu mon modèle d'héritage.

    En gros, j'ai des tables avec des héritages, et un bug survient lorsque je crée la table Cuisinier: le champ de type ID ne contient pas le mot clé PRIMARY KEY AUTO INCREMENT (consulter le modèle avec un outil de visualisation de BDD).

    Infos: Cuisinier et Person héritent toutes deux de Foo, Foo hérite de Bar.

    C'est étrange car la class Person qui hérite de Foo possède bien le champ PRIM KEY AUTO INC.


    Bon courage pour le débug !
    Fichiers attachés Fichiers attachés

  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


    J'ai regardé rapidement ton code : après exécution, j'ai 2 assert qui se déclenchent => en effet, dans tes fichiers "Person.cpp" et "Cuisinier.cpp", tu redéfinis "t.data( &Cuisinier::dummyData, "data" );" alors que tu l'as déjà défini dans la classe de base "Bar" !

    J'ai donc supprimé les 2 lignes suivantes :
    - t.data( &Person::dummyData, "data" );
    - t.data( &Cuisinier::dummyData, "data" );

    Après cette correction et exécution, voici ce que j'obtiens comme trace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [9784] QxOrm.DllMain() ---> DLL_PROCESS_ATTACH
    [9784] [QxOrm] qx::QxSqlDatabase : create new database connection in thread '9568' with key '{907390c2-07ac-4130-833f-0fb3bbd86a21}'
    [9784] [QxOrm] create extra-table (relation many-to-many) : CREATE TABLE IF NOT EXISTS CuisinierPizza (cuisinier_id INTEGER NOT NULL, pizza_id INTEGER NOT NULL)
    [9784] [QxOrm] sql query (18 ms) : CREATE TABLE Cuisinier (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, data TEXT)
    [9784] QxOrm.DllMain() ---> DLL_PROCESS_DETACH
    Ça me semble correct, non ?

    PS: si de ton côté les assert ne se déclenchent pas, c'est que tu travailles en mode release => je te conseille fortement de développer en mode debug (compiler QxOrm en mode debug), ça te permettra de détecter ce type de problème très rapidement !

    EDIT: Ok je viens de voir ton bug, pour le voir il faut enchainer dans le main les create_table des classes Pizza, Person et Cuisinier. Comme ils partagent tous la même classe de base et qu'il y a des relations many-to-many entre eux => c'est ça qui pose problème.
    Je vais corriger ça pour la 1.2.2...
    Merci d'avoir détecté ce bug
    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 du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Points : 49
    Points
    49
    Par défaut
    Ah oui ! Tu as raison, j'ai oublié de compiler ça en debug.

    Ouf ! Tu confirmes le bogue. Je vais attendre la 1.2.2 ! Merci !
    La sortie serait potentiellement pour quand, que je m'organise ?

  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
    Je vais d'abord préparer une BETA 15 (qui corrigera les 2 problèmes que tu as remonté), je te mettrai le lien dès que disponible (aujourd'hui ou demain).
    Ensuite la version finale de la 1.2.2 devrait sortir avant la fin du mois je pense...
    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
    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
    Je viens de mettre en ligne QxOrm 1.2.2 BETA 15 :
    http://www.qxorm.com/version/QxOrm_1.2.2_BETA_15.zip

    Ton problème doit être résolu avec cette version.
    Tu me diras si tout fonctionne de ton côté stp ?
    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.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Points : 49
    Points
    49
    Par défaut
    Excellent ! Merci beaucoup !

    Je vais tester ça, mais avant je crée un nouveau sujet pour un souci niveau conception... J'essaie de faire quelque chose d'assez difficile et tordu, mais je pense avoir trouvé une solution qui serait vraiment intéressante pour moi !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par QxOrm Voir le message
    Je viens de mettre en ligne QxOrm 1.2.2 BETA 15 :
    http://www.qxorm.com/version/QxOrm_1.2.2_BETA_15.zip

    Ton problème doit être résolu avec cette version.
    Tu me diras si tout fonctionne de ton côté stp ?
    Mmmh... Ton archive a une taille de 0ko !

  8. #8
    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
    Y a du avoir un soucis au moment de l'upload.
    Tu peux réessayer si tu veux, ça devrait marcher maintenant...
    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.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Points : 49
    Points
    49
    Par défaut
    Ok, c'est bon, ça marche de mon côté !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/01/2014, 14h07
  2. Réponses: 8
    Dernier message: 11/01/2012, 18h40
  3. Base complexe avec Access
    Par ip203 dans le forum Access
    Réponses: 3
    Dernier message: 09/06/2006, 17h36
  4. [SQL] Requête complexe avec appel multiple à la même table
    Par Julien Dufour dans le forum Langage SQL
    Réponses: 9
    Dernier message: 14/04/2005, 14h12
  5. Requete un peu complexe avec la fonction IN
    Par Taichin dans le forum Oracle
    Réponses: 27
    Dernier message: 10/11/2004, 08h59

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