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 :

soucis requete avec clé composite


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Par défaut soucis requete avec clé composite
    Bonjour, je tente actuellement d'executer une requete sur une table avec une clé primaire composée mais le soucis c'est qu'il ne semble pas reconnaitre cette clé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    could not resolve property: IdProfil of: fr.annu.hibernate.ApplicationProfil [ from fr.annu.hibernate.Profil p where p.id in ( select ap.IdProfil from fr.annu.hibernate.ApplicationProfil ap where ap.IdApplication =3 group by ap.IdProfil )]

    Voici le mapping des classes en question :

    mapping classe ApplicationProfil, avec clé composite:
    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
    27
    28
    29
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping package="fr.annu.hibernate">
    	<class name="ApplicationProfil" table="APPLI_PROFIL">
    		<composite-id name="id" class="fr.annu.hibernate.compositeKeys.ApplicationProfilCompositePK" unsaved-value="any" >
    			<key-many-to-one
    				name="IdApplication"
    				class = "Application"
    				column="ID_APPLICATION" 
    				lazy="false"
    			/>
    			<key-many-to-one
    				name="IdProfil"
    				class = "Profil" 
    				column="ID_PROFIL"
    				lazy="false"
    			/>
    		</composite-id>
    		<property
    			column="COMMENTAIRE"
    			length="30"
    			name="commentaire"
    			type="string"
    		 />
    	</class>
    </hibernate-mapping>
    classe de la clé composite:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    package fr.annu.hibernate.compositeKeys;
     
    import java.io.Serializable;
    import java.math.BigDecimal;
     
    public class ApplicationProfilCompositePK implements Serializable {
      private BigDecimal idApplication;
      private BigDecimal idProfil;
     
      public BigDecimal getIdApplication() {
        return idApplication;
      }
      public void setIdApplication(BigDecimal idApplication) {
        this.idApplication = idApplication;
      }
      public BigDecimal getIdProfil() {
        return idProfil;
      }
      public void setIdProfil(BigDecimal idProfil) {
        this.idProfil = idProfil;
      }
     
     
      @Override
      public boolean equals(Object obj) {
        boolean isEquals = false;
        ApplicationProfilCompositePK other = (ApplicationProfilCompositePK)obj;
        isEquals = this.getIdApplication().equals(other.getIdApplication());
        isEquals = isEquals && this.getIdProfil().equals(other.getIdProfil());
        return isEquals;
      }
     
      @Override
      public int hashCode() {
        return super.hashCode();
      }
     
    }
    mapping classe Profil:
    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
    27
    28
    29
    30
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping package="fr.annu.hibernate">
    	<class name="Profil" table="PROFIL">
    		<id
    			column="ID_PROFIL"
    			name="id"
    			type="java.math.BigDecimal"
    		>
    		</id>
     
    		<property
    			column="CD_PROFIL"
    			length="4"
    			name="codeProfil"
    			type="string"
    		 />
    		<property
    			column="LIBELLE_PROFIL"
    			length="20"
    			name="libelleProfil"
    			not-null="true"
    			type="string"
    		 />
     
    	</class>
    </hibernate-mapping>
    méthode contenant la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	public static List getProfilList(BigDecimal id){
    		Session session = HibernateUtil.currentSession();
    		List profils = null;
    		String maRequete = " from Profil p where p.id in ( select ap.IdProfil from ApplicationProfil ap where ap.IdApplication ="+id+" group by ap.IdProfil )";
    		try{
    			profils = ProfilDAO.getInstance().find(maRequete);
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    		return profils;
    	}

    J'avouerais que c'est la premiere fois que je touche à une classe avec un clé composite donc je galerere un peu mais bon :d


    Si vous pouviez me filer un petit coup de main



    Merci.

  2. #2
    agi
    agi est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Par défaut
    Salut,
    Je pense que le problème vient du fait que tu essayes d'accéder directement aux attributs de ta clé composite.

    Essaye cette modification sur ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String maRequete = " from Profil p where p.id in 
                    ( select ap.id.IdProfil from ApplicationProfil ap 
                      where ap.id.IdApplication ="+id+" group by ap.IdProfil )";

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Par défaut
    Salut , effectivement ça venait de là , merci bien.

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

Discussions similaires

  1. requete avec clé composite, erreur de setter :o
    Par erox44 dans le forum Hibernate
    Réponses: 1
    Dernier message: 03/07/2009, 15h03
  2. [MySQL] souci sur une requete avec jointure
    Par fey dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/09/2008, 11h11
  3. [C#] Soucis requete avec oracle
    Par kyrsa dans le forum C#
    Réponses: 2
    Dernier message: 25/04/2007, 22h30
  4. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  5. Requete avec des décimales
    Par Sandrine75 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/06/2003, 10h18

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