bonjour,
J'ai défini une classe Interventions qui a une relation many-to-one avec une classe Configuration et une seconde avec une classe Equipe. La classe Configuration a quant à elle une relation many-to-one avec une classe Periode.
Voici le descriptif de mes classes:
Tous les accesseurs et les mutateurs de mes classes apparaissent comme bien définis.
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 Class Interventions { Configuration configuration; Equipe equipe; ... } Class Configuration { Periode periode; ... } Class Equipe { String codeEquipe; ... } Class Periode { int mois; int annee; ... }
Je souhaiterais récupérer les objets Interventions associés à une période donnée et à une equipe donnée
j'ai défini une requête ainsi :
Je récupère le résultat de mon résultat dans un itérateur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DetachedCriteria criteria = DetachedCriteria.forClass(Interventions.class) .setFetchMode("equipe,FetchMode.JOIN) .setFetchMode("configuration,FetchMode.JOIN) .setFetchMode("configuration.periode,FetchMode.JOIN) .add(Restrictions.eq("equipe", monEqu)) .add(Restrictions.eq("configuration.periode", maPeriode));
A l'exécution de mon code, j'obtiens l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Iterator monResultat = getHibernateTemplate().findByCriteria(criteria).iterator();
org.hibernate.QueryException : could not resolve property : configuration.periode
Est-ce que ma requete est mal ecrite?
PS : Le mapping de mes classes est le suivant:
fichier Interventions.hbm.xml:
fichier Configuration.hbm.xml:
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 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="monprojet.bean" default-lazy="true" default-cascade="none"> <class optimistic-lock="version" table="INTERVENTION_INTV" name="Interventions"> <id unsaved-value="null" name="id" type="java.lang.Long" column="intv_ID"> <generator class="native"> <param name="sequence">intv_ID_SEQUENCE</param> </generator> </id> <version column="VERSION" generated="never" name="version" type="integer"/> <property column="VALEUR1" generated="never" lazy="false" name="nbJoursAgents" type="java.math.BigDecimal"/> <property column="VALEUR2" generated="never" lazy="false" name="nbJoursIntervention" type="java.math.BigDecimal"/> <property column="VALEUR3" generated="never" lazy="false" name="nbTotalInterventions" type="java.math.BigDecimal"/> <property column="VALEUR4" generated="never" lazy="false" name="delaiMoyenIntervention" type="java.math.BigDecimal"/> <property column="VALEUR5" generated="never" lazy="false" name="tpsTransportTotalJours" type="java.math.BigDecimal"/> <many-to-one class="Equipe" column="Equipe_ID" foreign-key="FK_INTV_Equipe" name="Equipe" not-null="true"/> <many-to-one name="configuration" class="monprojet.bean.Configuration" foreign-key="FK_INTV_CONF" lazy="false"> <column name="CONF_ID" not-null="true"/> </many-to-one> </class> </hibernate-mapping>
fichier Equipe.hbm.xml:
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 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="monprojet.bean"> <class name="Configuration" table="CONFIGURATION_CONF"> <id column="CONF_ID" name="id" type="java.lang.Long"> <generator class="native"> <param name="sequence">CONF_ID_SEQUENCE</param> </generator> </id> <natural-id mutable="true"> <property column="UIDUTILISATEUR" generated="never" lazy="false" name="uidUtilisateur" type="java.lang.String"/> </natural-id> <version column="VERSION" generated="never" name="version" type="integer"/> <property column="DATESAISIE" generated="never" lazy="false" name="dateSaisie" type="java.util.Calendar"/> <many-to-one column="CSI_ID" class="Csi" name="csi" not-null="true" foreign-key="FK_CONF_CSI" /> <many-to-one name="periode" class="Periode" foreign-key="FK_CONF_PERIODE" lazy="false"> <column name="PERI_ID" not-null="true"/> </many-to-one> </class> </hibernate-mapping>
fichier Periode.hbm.xml:
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 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="monprojet.bean" default-lazy="true" default-cascade="none"> <class optimistic-lock="version" table="Equipe_Equipe" name="Equipe"> <id unsaved-value="null" name="id" type="java.lang.Long" column="Equipe_ID"> <generator class="native"> <param name="sequence">Equipe_ID_SEQUENCE</param> </generator> </id> <natural-id mutable="true"> <property name="codeEquipe" column="Equipe" type="java.lang.String"/> </natural-id> <version name="version" column="VERSION" type="integer"/> <many-to-one column="CSI_ID" class="Csi" name="csi" not-null="true" foreign-key="FK_Equipe_CSI" /> </class> </hibernate-mapping>
Je souhaiterais de plus trouver un manuel de référence pour l'écriture des criterias avec le maximum d'exemples. Quelqu'un aurait-il des recommandations ( je sais, j'en demande beaucoup )...
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 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="monprojet.bean"> <class name="Periode" table="PERIODE_PERI"> <id column="PERI_ID" name="id" type="java.lang.Long"> <generator class="native"> <param name="sequence">PERI_ID_SEQUENCE</param> </generator> </id> <natural-id mutable="true"> <property column="MOIS" generated="never" lazy="false" name="mois" type="java.lang.Short"/> <property column="ANNEE" generated="never" lazy="false" name="annee" type="java.lang.Short"/> </natural-id> <version column="VERSION" generated="never" name="version" type="integer"/> </class> </hibernate-mapping>
Merci pour votre réponse.
Partager