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 :

[ HIBERNATE ] Question pour les doués


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Par défaut
    bon, l'admin de la bdd m'a dit n'importe quoi
    j'en conclue donc c pas bon mais que ça ne changera pas de si tôt

    la relation est de type n:m
    donc 3 tables : client, appel et appel_client

    idéalement, il faut 2 classes java : client et appel
    dans client, rien de spécial si ce n'est les propriétés de client
    en revanche, dans appel, il faudrait qu'il y ait aussi les champs de appel_client

    dans mon code, quel est le plus performant ?
    • dois-je me servir d'un session.find("from appel, appel_client, client ...") et ensuite travailler sur la List retournée pour faire des classes hybride (appel + appel_client + client)
    • ou dois-je mappée spécialement avec 2 one-to-one pour qu'un simple session.find("from client") tous les champs écrit dans les fichiers de mapping soient directement remontés


    si j'ai été assez clair, qui peux me dire quel est le plus performant : : merci

  2. #2
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    Ca dépend, la table de croisement contient des informations complémentaires ? Si oui, la solution préconisée est d'utiliser une collection de component :

    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
     
    <set name="appels" lazy="true" table="appel_client">
      <key column="client_id"/>
      <composite-element class="AppelClient">
        <parent name="client"/>
        <many-to-one name="appel" class="Appel" not-null="true"/>
        <property name="xxx" column="yyy" not-null="true"/>
        ...
      </composite-element>
    </set>
     
    public class AppelClient() {
        private Client client;
        private Appel appel;
        private Zzz xxx;
     
    ...
    }

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Par défaut
    alors là, franchement, on outrepasse mes compétences
    la documentation de Hibernate est peut-être complète mais je ne latrouve franchement pas intuitive
    autrement dit, j'ai du mal

    j'ai fait des tests, et je constate que non seulement je me plante mais surtout je n'avance pas très vite du tout

    alors questions :
    ta collection, où la mets-tu ? dans le fichier appel_client.hbm ?
    et au niveau des clés,
    clent_id est indiqué mais appel_id ?

    en attendant, je continue le déchiffrement de l'aide d'hibernate
    encore une chance qu'elle est en français...

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Par défaut
    Citation Envoyé par dlemoing
    Ca dépend, la table de croisement contient des informations complémentaires ? Si oui, la solution préconisée est d'utiliser une collection de component :

    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
     
    <set name="appels" lazy="true" table="appel_client">
      <key column="client_id"/>
      <composite-element class="AppelClient">
        <parent name="client"/>
        <many-to-one name="appel" class="Appel" not-null="true"/>
        <property name="xxx" column="yyy" not-null="true"/>
        ...
      </composite-element>
    </set>
     
    public class AppelClient() {
        private Client client;
        private Appel appel;
        private Zzz xxx;
     
    ...
    }
    il me met
    net.sf.hibernate.PropertyNotFoundException: Could not find a getter for appels in class org.qualipharma.Appel_Ps

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		<set name="appel" lazy="true" table="appel_client">
    			<key column="CdApp" />
    			<composite-element class="org.qualipharma.Appel_Client">
     
    				<many-to-one name="appel" class="org.qualipharma.Appel" />
    				<property name="LibelleAppel" type="string" />
    				<property name="TypeAppel" type="integer" />
    				<property name="CommentaireAppel" type="string" column="cm_app" />
     
    			</composite-element>
    		</set>
    mais il me met
    net.sf.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of org.qualipharma.Appel_Ps.setAppel
    alors que j'ai rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="hibernate.cglib.use_reflection_optimizer">false</property>
    dans mon fichier de config hibernate hibernate.cfg.xml

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Par défaut
    franchement, ça devient de plus en plus compliqué

Discussions similaires

  1. Question pour les experts
    Par Philippe66 dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 31/08/2006, 23h35
  2. Questions pour les encodages
    Par alfa88 dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 20/05/2006, 20h32
  3. Question pour les maitres du multithreading
    Par giova_fr dans le forum Windows
    Réponses: 20
    Dernier message: 20/12/2005, 16h18
  4. Réponses: 3
    Dernier message: 14/12/2005, 23h08
  5. Questions pour les developpeurs independants
    Par voyageur dans le forum Freelance
    Réponses: 5
    Dernier message: 22/06/2005, 11h33

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