-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: [Débutant] Table de référence
PostPosted: Tue Jan 10, 2006 10:28 am 
Newbie

Joined: Tue Jan 10, 2006 10:09 am
Posts: 3
Hibernate version: 3.1

Bonjour,

J'ai une base de données dont le schéma est fixé, et je dois écrire les classes et les DAO permettant d'y accéder.
J'ai étudié la documentation, Hibernate In Action, et les posts du forum, et testé différentes solutions, malgré tout je n'arrive pas à résoudre le problème simple suivant.


Voici la base :
Code:
* Table BDS :
        BdsId (clé primaire)
        diverses infos...

* Table BDS_INFOS :
        BI_BdsId (clé primaire, FK vers BDS.BdsId)
        BI_InfoId (clé primaire, FK vers INFO.InfoId)
        Value

* Table INFO (table de référence):
        InfoId (clé primaire)
        InfoName


Comme vous pouvez le voir, j'ai un objet "principal" BDS qui possède différentes propriétés. Chaque propriété a un nom et un ID de référence, stockés dans INFO. La table BDS_INFOS sert donc à associer les BDS et les INFOs, en leur donnant une valeur.

Il est évident que BDS est représenté par une classe Java, mais là où je coince, c'est comment mapper BDS_INFOS correctement.
La difficulté vient du fait que je dois récupérer également le nom (colonne InfoName) de chaque INFO, pour l'afficher dans le formulaire web permettant de modifier tout ça.

J'ai essayé avec une classe BdsInfo et un Set dans Bds, puis en mappant les Infos sous la forme d'une Map dans Bds, mais aucune de ces solutions n'a fonctionné.

J'en appelle à votre expertise pour m'aider, s'il vous plaît ?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 10, 2006 7:59 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Dans le chapitre 8 de Hibernate reference il y a un example Order->Purchase->Item.
Ca ressemble beacoup a tes besoins.

Sebastian

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jan 13, 2006 12:18 pm 
Newbie

Joined: Tue Jan 10, 2006 10:09 am
Posts: 3
Bonjour,

J'ai ré-étudié avec attention la documentation, et notamment le chapitre indiqué; cela ne correspond malheureusement pas à mon problème.

Je vais essayer de réexpliquer exactement.

J'ai d'un côté des Bds (mappés dans BDS), et de l'autre des Infos (mappées dans INFO, c'est une table de référence). Il existe une relation N-N entre les deux, mappée dans BDS_INFOS. Chaque association est caractérisée par une valeur (colonne VALUE dans BDS_INFOS).

Je souhaite mapper ces relations dans la classe Bds sous la forme d'une collection d'instances de la classe "Info", possédant comme attributs : l'InfoId et l'InfoName de la table INFO, et la Value de la table d'association.

Jusqu'ici, j'ai défini une classe Bds qui mappe correctement ses différents attributs, et une classe "Info" possédant les attributs suivants : InfoId et InfoName (à mapper dans la table INFO), et Value (tirée la table BDS_INFOS).


Je bloque sur le mapping de la classe Info, et sur la partie du mapping de Bds décrivant la relation.

Je suis conscient qu'il s'agit presque d'un cas N-N classique, mais la présence de la colonne Value dans la table de relation me pose problème.

Pouvez-vous m'aider ?


Top
 Profile  
 
 Post subject:
PostPosted: Sat Jan 14, 2006 10:43 am 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Si la classe Info inclus "value" pourquoi tu ne mets pas value dans le tabelau Info?

Je ne vois pas une autre solution pour le moment.

Sebastian

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject: Re: [Débutant] Table de référence
PostPosted: Sun Jan 15, 2006 5:22 pm 
Newbie

Joined: Sun Jan 15, 2006 4:39 pm
Posts: 6
Bonjour,

oui c'est la meme situation:
http://www.hibernate.org/hib_docs/reference/fr/html_single/#example-mappings-customerorderproduct

Si vous realisez ca, vous finirez avec:
Code:
class Bds() {
    Collection<BdsInfo> getBdsInfos();
    void setBdsInfos(Collection<BdsInfos> bdsInfos);
}

class Info() {
    String getName();
    void setName(String name);
}

class BdsInfo() {
    String getValue();
    void setValue(String value);
    //
   Info getInfo();
   void setInfo(Info info);
}


mais vous avez besoin plutot de:

Code:

class Bds() {
    Collection<TotalInfo> getInfos();
}

class TotalInfo() {
      String getInfoName(); // ca vient de class Info
      void setStringName(String name);
      //
      String getValue(); // ca vient de class BdsInfo
      void setValue(String value);
}


Afin de fair ca, vous devez realiser un adapteur de collection. Cet adapteur va adapter la Collection<BdsInfo> a une Collection<TotalInfo>.

Ca peut paraitre:
Code:
class Bds() {
    // seulement Bds et Hibernate peuvent acceder
    private Collection<BdsInfo> getBdsInfos();
    private void setBdsInfos(Collection<BdsInfos> bdsInfos);

    // public visibilite
    public Collection<TotalInfo> getInfos() {
         return new TotalInfoAdapterCollection(getBdsInfos());
    }
}   



C'est une situation classique ou l'association pleusiers-vers-pleusiers est separee a deux association un-ver-pleusieur. Dans l'example 18.3. Customer/Order/Product c'est realise avec une collections d'objets dépendants(les LineItems. Le LineItem corespond a votre BdsInfo.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.