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 :

composite-id, HQL => exception


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Par défaut composite-id, HQL => exception
    Quand je lance la requête suivante, j'obtiens une QueryException :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM dto.Price AS price WHERE price.company.id=1234 AND price.company.saleoffice.id=1
    Exception in thread "main" org.hibernate.QueryException: could not resolve property: company.id of: dto.Price [FROM dto.Price AS price WHERE price.company.id=1234 AND price.company.saleoffice.id=1]

    En revanche, cette requête équivalente fonctionne correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM dto.Price AS price JOIN price.company as company WHERE company.id=1234 AND company.saleOffice.id=1
    Son seul désavantage est qu'elle génère une jointure pour recuperer des donnees qui ne me servent pas (ma table price contient deja les champs company_id et sale_office_id)

    Voila les mappings de Price et Company :

    Price
    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
    <class name="dto.Price" table="price">
    	<composite-id>
    		<key-property name="productCode" column="product_code"/>
    		<key-property name="companyId" column="company_id"/>
    		<key-property name="saleOfficeId" column="sale_office_id"/>
    	</composite-id>
    	<many-to-one name="product" class="dto.Product" insert="false" update="false">
    		<column name="product_code"/>
    		<column name="sale_office_id"/>
    	</many-to-one>
    	<many-to-one name="company" class="dto.Company" insert="false" update="false">
    		<column name="company_id"/>
    		<column name="sale_office_id"/>
    	</many-to-one>
    	blablabla...
    </class>
    Company
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <class name="dto.Company" table="company">
    	<cache usage="read-write"/>
    	<composite-id>
    		<key-property name="id" column="id"/>
    		<key-many-to-one name="saleOffice" class="dto.SaleOffice" column="sale_office_id"/>
    	</composite-id>
    	blabla...
    </class>
    Quelqu'un comprend ce qui se passe ? une idée ?

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    as tu essayé quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM dto.Price AS price WHERE price.id.company.id=1234 AND price.id.company.saleoffice.id=1
    de cette maniere, tu regardes dans la clé de ta table, hibernate ne devrait pas chercher plus loin...

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Par défaut
    id est un mot clé réservé en HQL ?

  4. #4
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    oui, ça désigne la clé primaire de l'objet en question

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Par défaut
    Ah tu m'apprends quelque chose de bien là
    Il me semble pas avoir lu ça dans la doc d'hibernate
    Je testerai demain, j'espère que ca va marcher !

  6. #6
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    c'est que tu n'as pas bien lu alors

    cf la doc sur ce sujet

    de plus c'est souvent dans les exemples de requêtes

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

Discussions similaires

  1. HQL génère une Exception
    Par nader1987 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 31/05/2012, 17h44
  2. Composite id provoque exception
    Par Reno17 dans le forum Hibernate
    Réponses: 0
    Dernier message: 18/03/2010, 15h39
  3. [HQL] Update HQL sur une table avec Id composite
    Par Eccoon dans le forum Hibernate
    Réponses: 5
    Dernier message: 02/04/2007, 12h10
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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