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 :

Requête hibernate multi classes


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut Requête hibernate multi classes
    Salut,

    Je veux faire une requête hibernate qui prend en attribut une variable d'une autre classe. Pour clarifier, j'au une table avec une clé combinée. BundlePerformance c'est la table et BundlePerformanceId est l'id combinée. cet id contient un numéro et une date.je veux faire une requete de BundlePerformance qui prend comme attribut la date de la clé qui est dans une autre classe. 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
    	public List findPERF(Schedule schedule, Ptp ptp, Date collectionDate) {
    		sessionFactory.getCurrentSession().beginTransaction();
    		try {
    			List results = sessionFactory
    					.getCurrentSession()
    					.createCriteria(
    							"mappingclass.BundlePerformance")
    					.add(Restrictions.eq("schedule", schedule))
    					.add(Restrictions.eq("ptp", ptp))
    					.createCriteria(
    							"mappingclass.BundlePerformanceId")
    					.add(Restrictions.eq("collectionDate", collectionDate))
    					.list();
    			sessionFactory.getCurrentSession().getTransaction().commit();
    			return results;
    		} catch (RuntimeException re) {
    			return null;
    		}
    	}
    J'ai essayé ce code mais ça n'a pas marché, et je pense qu'il y a une erreur dans la syntaxe puisque il me rend la requête:

    Hibernate: select ptp0_.ptp_id as ptp1_22_0_, ptp0_.board_id as board2_22_0_, ptp0_.date as date22_0_, ptp0_.userlabel as userlabel22_0_, ptp0_.position as position22_0_, ptp0_.txFrequency as txFreque6_22_0_, ptp0_.protectionGroup as protecti7_22_0_, ptp0_.enabled as enabled22_0_ from MDB_NOMAD.ptp ptp0_ where ptp0_.ptp_id=?
    et moi je veux where ptp et collection date.
    J'espere avoir de l'aide.

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Bonjour,

    C'est difficile à voir sans connaître le mapping exact mais tu dois vouloir faire quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    List results = sessionFactory
    		.getCurrentSession()
    		.createCriteria("mappingclass.BundlePerformance")
    		.add(Restrictions.eq("schedule", schedule))
    		.add(Restrictions.eq("ptp", ptp))
    		.add(Restrictions.eq("id.collectionDate", collectionDate))
    		.list();
    Mais encore une fois, précise un peu mieux ton mapping si tu veux qu'on puisse mieux t'aider.
    D'ailleurs comment cela ce fait-il qu'on ne retrouve pas "schedule" dans la requête ?

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par Palsajicoco Voir le message
    Salut,

    Je veux faire une requête hibernate qui prend en attribut une variable d'une autre classe. Pour clarifier, j'au une table avec une clé combinée. BundlePerformance c'est la table et BundlePerformanceId est l'id combinée. cet id contient un numéro et une date.je veux faire une requete de BundlePerformance qui prend comme attribut la date de la clé qui est dans une autre classe. 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
    	public List findPERF(Schedule schedule, Ptp ptp, Date collectionDate) {
    		sessionFactory.getCurrentSession().beginTransaction();
    		try {
    			List results = sessionFactory
    					.getCurrentSession()
    					.createCriteria(
    							"mappingclass.BundlePerformance")
    					.add(Restrictions.eq("schedule", schedule))
    					.add(Restrictions.eq("ptp", ptp))
    					.createCriteria(
    							"mappingclass.BundlePerformanceId")
    					.add(Restrictions.eq("collectionDate", collectionDate))
    					.list();
    			sessionFactory.getCurrentSession().getTransaction().commit();
    			return results;
    		} catch (RuntimeException re) {
    			return null;
    		}
    	}
    J'ai essayé ce code mais ça n'a pas marché, et je pense qu'il y a une erreur dans la syntaxe puisque il me rend la requête:



    et moi je veux where ptp et collection date.
    J'espere avoir de l'aide.


    vous devriez avoir un objet bundlePerformanceId de la classe BundlePerformanceId initialisé avec les 2 champs du critère
    et faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    add(Restrictions.eq("BundlePerformance_PK_FIELD_NAME",bundlePerformanceId ));
    sans le .createCriteria("mappingclass.BundlePerformanceId")

    (et bien sûr hashCode et equals de BundlePerformanceId correctement implémentés)

  4. #4
    Membre éclairé Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut
    Merci -gma-, c'est vraiment ca le truc j'ai pas encore essayé puisque j'ai pas toutes les données mais j'ai affiché la requete et c'est bien ca
    Merci.

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

Discussions similaires

  1. hibernate problem (classe not mapped)
    Par oughlad dans le forum Hibernate
    Réponses: 11
    Dernier message: 25/06/2007, 19h57
  2. Hibernate multi couche
    Par BRAUKRIS dans le forum Hibernate
    Réponses: 1
    Dernier message: 27/07/2006, 13h41
  3. Problème avec les requêtes hibernate
    Par joseph_p dans le forum Hibernate
    Réponses: 5
    Dernier message: 04/04/2006, 22h54
  4. [Conseils] Vue plutôt qu'une requête de multi-jointures
    Par etiennegaloup dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 17h51
  5. execution d'un prog avec des fichiers multi-class
    Par Ice-B dans le forum Général Java
    Réponses: 2
    Dernier message: 05/08/2004, 11h43

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