Requete SQL Hibernate

g25452 Messages postés 78 Statut Membre -  
Marco la baraque Messages postés 1030 Statut Contributeur -
Bonjour,

Je code en java, et j'utilise Hibernate,
lorsque je fais dans ma requete une selection des types de prestations par employe,

il met en rouge "employe" apres le where tp.employe
et pourtant dans "hibernate.hbm.xml" j'ai bien mis la reference vers employe.

Ma requete :



 String query = "select tp from TypePrestation tp " +
                "where tp.employe.id = :idEmploye ";



La definition de ma classe dans hibernate.hbm.xml :

TypePrestation :


 <class name="TypePrestation" table="t_typeprestation">
        <id name="id" column="id" type="int">
            <generator class="sequence">
                <param name="sequence">id_sequence</param>
            </generator>
        </id>
        <property name="label" column="label" type="string"/>

        <many-to-one name="utilisateur" column="idutilisateur" class="Employe"/>
    </class>



Personne : (Employe herite de Personne)


<class name="Personne" table="t_personne">
        <id name="id" column="Id" type="int">
            <generator class="sequence">
                <param name="sequence">id_sequence</param>
            </generator>
        </id>
        <property name="nom" column="nom" type="string"/>
        <property name="prenom" column="prenom" type="string"/>

        <many-to-one name="utilisateur" column="idutilisateur" class="Employe"/>


        <joined-subclass name="Employe" table="t_employe">
            <key column="id"/>
            <property name="matricule" column="matricule"/>
            <set name="releves">
                <key column="idemploye"/>
                <one-to-many class="Releve"/>
            </set>
        </joined-subclass>
    </class>



Est-ce que quelqu'un pourrait m'aider,

Merci

1 réponse

Marco la baraque Messages postés 1030 Statut Contributeur 329
 
Bonsoir,
Ta requête là, c'est un peu un mélange HQL/SQL là...

Si tu utilises la notation pointée (HQL), il ne faut pas utiliser le nom des champs de tes tables, mais le nom des attributs de tes java beans (accessible grâce à des getters).

Ici il faut :
 String query = "select tp from TypePrestation tp " +
                "where tp.utilisateur.id = :idEmploye ";


Cordialement,
0