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 :

Comment recuperer les metadata?


Sujet :

Hibernate Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut [Résolu]Comment recuperer les metadata?
    Bonjour,

    Je suis en formation et je dois realiser un projet pour la valider.

    Ce projet fonctionne avec hibernate.
    J'utilise aussi MySql, et eclipse.

    Voici mon probleme: Je voudrais recupérer le nom des tables ainsi que le nom des colones d'une base de donnée mais je n'y arrive pas. J'ai recherché sur le net mais aucunes solutions ne fonctionnent.

    Hibernate lui fonctionne car j'arrive a lire dans une table d'ailleur voici le code:
    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
    package actionsBDD;
    import tech.*;
    import java.util.*;
    import net.sf.hibernate.*;
    import com.minosis.hibernate.*;
    import java.sql.*;
     
    public class LireLaBDD 
    {
    	@SuppressWarnings("unchecked")
    	public Collection RecupResultat(String motArechercher)
    	{List  list = null;
    	try
    	{
    		Session session = HibernateUtil.currentSession();
     
    		list = session.find("from TContact where CONCAT_WS( '~', COALESCE( nom , '' ), COALESCE( prenom , '' ), COALESCE( age , '' )) like '%" + motArechercher + "%'");
     
     
    		HibernateUtil.closeSession();
    	}catch(Exception e){Affichage.affiche("Exception dans LireLaBDD() de LireLaBDD :" + e);}
     
    	return list;
    	}
     
    }
    et voici le code qui affiche le resultat (dans une autre classe)

    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
    private void btnActiverRecherche_clic (ActionEvent evt) 
    	{try
    	{
    		String concatResultat = "";
    		LireLaBDD recupDonnees = new LireLaBDD();
     
    		Iterator it = recupDonnees.RecupResultat(textMotRecherche.getText()).iterator();
    			 while(it.hasNext())
    			 {
    			   TContact contact = (TContact)it.next();
    			   concatResultat = concatResultat + (contact.getNom() +" "+ contact.getPrenom() +" "+ contact.getAge() + "\n");
    			   txtResultatRecherche.setText(concatResultat);
    			 }
    	}catch (Exception e){Affichage.affiche("Exception dans btnActiverRecherche_clic() de FrmRecherche :" + e);}
    	}
    Voila , je continue de chercher mais bon je sais plus ou chercher justement.

    Je m'en remet donc a vous

    Allé a bientot .

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Salut,

    Par default, hibernate nome ta table avec le nom de ta classe Entity( mais tu peux le personnalisé).
    Exemple, si t'as une classe 'Personne' le nom de ta table sera 'PERSONNE'.

    Bon courage.

    PS: La création de requete par injection de parametres en concatenant ta chaine avec des + est très couteuse en ressources...
    Utilise la classe 'StringBuffer'.

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Autant utiliser la méthode find adéquate qui permet d'injecter des paramètres.

    A partir de ton objet sessionFactory, certainement initialisé dans ton HibernateUtil, tu trouveras les méthodes permettant d'accéder aux Metadata.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Oui c'est vrai que les noms de colones sont dans le fichier .hbm
    Je vais donc exposer mon probleme autrement:

    Pour je projet que je dois effectuer il faut que je crée un moteur de recherche qui puisse effectuer des recherche sur une base de donnée sans connaitre les tables tout ca en utilisant hibernate.

    Donc pour pouvoir rechercher dans les tables il me faut deja le nom des tables, puis le nom des colonnes pour pouvoir configurer hibernate.

    Ensuite il faut que je puisse creer les fichier xml (que je ne sais pas faire) de config d'hibernate....

    Pas evident pour moi qui debute en java (j'ai commencé il y a deux mois.)

    Je sais pas si vous pourrez m'aider mais bon je tente le coup quand meme.

    Merci

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Salut,

    comme dit fr1man tu as la methode find, mais pour pouvoir effectuer ta recherche tu dois savoir ce que tu cherches...

    Donc tu dois lui passer en argument une classe.

    Cependant le veritable probleme c'est comment es-ce que tu peux faire passer le nom de ta classe à partir de l'interface HM à ton moteur de recherche...

    Bon Courage.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    C'est bon j'ai trouvé la solution pour les meta data, voici le code pour ceux que ca interesse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CollectionMetadata test= session.getSessionFactory().getCollectionMetadata("select * from table");
    L'objet CollectionMetadata recuperes toutes les Meta infos sur les tables , et voila

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/06/2005, 09h07
  2. Plus de partitions, comment récupérer les fichiers
    Par Michaël dans le forum Administration système
    Réponses: 6
    Dernier message: 01/06/2005, 20h41
  3. comment recuperer les messages
    Par devalender dans le forum Débuter
    Réponses: 2
    Dernier message: 17/06/2004, 19h30
  4. Comment recuperer les ip de la commande ipcinfig ?
    Par Walm dans le forum C++Builder
    Réponses: 5
    Dernier message: 04/05/2004, 16h04

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